PDA

View Full Version : سوال: چطوری در paintbox خط های رسم شده را پاک کرد؟



kamran_14
دوشنبه 29 فروردین 1390, 17:56 عصر
سلام
چطوری در paintbox خط های رسم شده را با یک دکمه پاک کرد؟

SAASTN
دوشنبه 29 فروردین 1390, 23:25 عصر
سوالتون خیلی گنگه. یه مقدار بیشتر توضیح بدین.
اگه چیزی شبیه به Paint رو شبیه سازی می کنید و می خواید کل صفحه ترسیم به رنگ پس زمینه دربیاد:
PaintBox1.Canvas.Brush.Color := BackColor;
PaintBox1.Canvas.Brush.Style := bsSolid;
PaintBox1.Canvas.Pen.Style := psClear;
PaintBox1.Canvas.FillRect(ClientRect);

اما اگه خطوط روی یه تصویر لود شده از حافظه ترسیم شده خوب باید تصویر رو یکبار دیگه ترسیم کنیم.
البته می دونید که کار کردن به اینصورت با Canvas در PaintBox خیلی بدرد بخور نیست، مثلا اگه ابعاد فرم تغییر پیدا کنه و از ابعاد خود PaintBox کوچکتر بشه و دوباره فرم بزرگ بشه می بینیم که تصویرهای ترسیم شده در PaintBox از بین میرن. بهتره یه TBitmap بسازیم ترسیمات رو در اون انجام داده و توی OnPaint مربوط به PaintBox اون رو ترسیم کنیم.
اما اگه منظورتون شبیه سازی Undo هست به عقیده من بهترین راه در مورد تصویر نگه داشتن یک کپی از تصویر بعد از هر مرحله ویرایشه والبته اگه بخواید مصرف حافظه رو پائین بیارید باید با یه مقدار کد نویسی بیشتر تنها بخشی از تصویر که تغییر کرده به همراه مختصات اون بخش رو نگهداری کنید.