PDA

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);


یه راهه دیگه هم از طریق فرموله که بفهمی داخل کلیک شده یا نه :متفکر: که من بلد نیستم :لبخند: