View Full Version : رنگ کردن اشیا در دلفی
Amin2008
دوشنبه 18 شهریور 1387, 12:52 عصر
سلام
چطوری میتونیم یک دایره یا خط بسته رو هنگام کلیک در داخل آن، فقط داخل خط بسته رنگ زده بشه و رنگ از خط بسته عبور نکنه؟
لطفا راهنمایی بکنید . متشکرم.
etedali
دوشنبه 18 شهریور 1387, 13:43 عصر
میتونی یک عدد Shape قرار بدی و کد زیر را در قسمتShape1MouseUp بنویسی
procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Shape1.Brush.Color := clYellow;
end;
Amin2008
پنج شنبه 21 شهریور 1387, 01:38 صبح
منظور من رنگ کردن شکلهای آماده در دلفی نبود منظورم رنگ کردن شکلهایی که خودمون می کشیم مثل برنامه ی Paint ویندوز یعنی اگر یک شکلی رو بوسیله ابزار مداد بکشی می تونی قسمت داخل اون شکل رو با یک کلیک رنگ بکنی.
اگر بیشتر منو راهنمایی بکنید ممنون میشم . با تشکر از شما.
soheil_ce
پنج شنبه 21 شهریور 1387, 03:38 صبح
سلام
اگه منطورت روی اشیاء هست باید روی Canvas کار کنی
یعنی اول روی Canvas اون شیء یک دایره می کشی که رنگ داخل و محیط و خارجش مختلف باشه :
Canvas.Brush.Color:=clBlack;
Canvas.FloodFill(X,Y,clBlack,fsBorder);
Canvas.Pen.Color:=clBlue;
Canvas.Brush.Color:=clRed;
Canvas.Ellipse(X1,Y1,X2,y2);
بعد در قسمت On Click باید چک کنی که آیا داخل دایره کلیک شده یا روی محیط دایره کلیک شده یا خارج دایره :
if Canvas.Pixels[Mouse.CursorPos.X,Mouse.CursorPos.Y]=clRed then
// داخل دایره کلیک شده
else if Canvas.Pixels[Mouse.CursorPos.X,Mouse.CursorPos.Y]=clBlue then
// روی محیط دایره کلیک شده
else
// خارج دایره کلیک شده
حالا می تونی توی قسمتی که تشخیص داده شد که داخل دایره کلیک شده بگی که همون نقطه رو رنگ آمیزی کنه :
Canvas.Brush.Color:= رنگ مورد نظر ;
Canvas.FloodFill(Mouse.CursorPos.X,Mouse.CursorPos .Y,clBlue,fsBorder);
یه راهه دیگه هم از طریق فرموله که بفهمی داخل کلیک شده یا نه :متفکر: که من بلد نیستم :لبخند:
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.