PDA

View Full Version : Canvas



Mahdi_Delphi
جمعه 11 فروردین 1385, 12:37 عصر
سلام
وقتی توی Canvas فرم خطی رسم میکنم یا شکلی رو میکشم اگه یه پنجره روی فرم بیاد یا فرم رو مینیمایز کنم و بعد دوباره restore کنم اون شکل پاک میشه:گریه:
باید چه کار کنم تا ثابت بمونه ؟:متفکر:

Delphi Skyline
جمعه 11 فروردین 1385, 12:39 عصر
باید بوسیله یک Thread این کارو مدام اجرا کنی .

Mahdi_Delphi
جمعه 11 فروردین 1385, 12:55 عصر
خیلی ممنون از جواب سریعتون
من کار با Thread ها رو بلد نیستم، میشه لطفآ مرجعی در این مورد معرفی کنید ؟

Sepidar
جمعه 11 فروردین 1385, 13:50 عصر
باید بوسیله یک Thread این کارو مدام اجرا کنی .
استاد عزیز!
لطفا در مورد مسائلی که نمیدونی اظهار نظر نکن،
مجبورت که نکردن اخوی!


وقتی توی Canvas فرم خطی رسم میکنم یا شکلی رو میکشم اگه یه پنجره روی فرم بیاد یا فرم رو مینیمایز کنم و بعد دوباره restore کنم اون شکل پاک میشه:گریه:
وقتی که قسمتی از فرم احتیاج به بازنویسی اطلاعات دارد، ویندوز با یک پیغام به برنامه شما این مساله رو اطلاع میده. اکثر کامپوننتها به صورت داخلی هندلرهای مناسب برای این بازنویسی قسمت پاک شده رو دارن. اما در صورتی که نیاز دارید بخشهای پاک شده فرم رو به طور دستی بازنویسی کنید (مثل همین موقعیتی که خودتون مثال زدید) میتونید از رویداد OnPaint استفاده کنید.





Occurs when the form is redrawn.

property OnPaint: TNotifyEvent;

Description

Use OnPaint to perform special processing when the form is redrawn. Any special painting on the form should be done in this event. OnPaint occurs before any controls on the form are painted.

Tip: To determine which portions of the form’s canvas need to be repainted, use the ClipRect property of the canvas.

If you use the form’s Canvas property outside the OnPaint event, it will be erased and drawn-over by the next OnPaint event.

Delphi Skyline
جمعه 11 فروردین 1385, 13:55 عصر
اصلا یه راه آسان تر . در OnPaint فرمت بنویس مثلا ::


procedure TForm1.FormPaint(Sender: TObject);
begin
form1.Canvas.Ellipse(40,20,80,10);
end;


همین . تمام شد . امیدوارم موفق بشی .

Delphi Skyline
جمعه 11 فروردین 1385, 13:56 عصر
ببخشید این پست رو قبل از پست شما فرستادم آقای سپیدار