ورود

View Full Version : سوال: ایجاد یک فریم RoundRect



mochenoo
یک شنبه 25 بهمن 1388, 17:20 عصر
با سلام

من با استفاده از تعریف یک شی از کلاس CRgn و CreateRoundRectRgn و FrameRgn یک کادر ایجاد می کنم :



CBrush brush(RGB(0,0,100));
CRgn rgn;

rgn.CreateRoundRectRgn(10,40,250,170,15,15);

dc.FrameRgn(&rgn,&brush,1,1);


اما این فریم در محل خمیدگی دارای چین هایی است و یکنواخت نیست.
چگونه می توانم یک فریم roundRect ولی تمیز و یکنواخت ایجاد کنم؟

Nima_NF
یک شنبه 25 بهمن 1388, 19:09 عصر
یکی از راهکار ها این است که یک عکس سایه و سفید 24bit بسازید که همان شکل مورد نظر شما باشد و لبه ها را نرم شده در عکس رسم شده باشد (به شکل blur شده یا نرم شده).

در انتهای مقاله زیر روش این کار نشان داده شده است، البته در مقاله زیر به جای عکس سیاه سفید یک عکس 24 با پس زمینه رنگی مشخصی هست، که شما می توانید سفید را در نظر بگیرید.

لینک مقاله:
http://www.flipcode.com/archives/Win32_Window_Skinning.shtml


البته در سیستم عامل های جدید، توابع دیگری وجود دارد که برای نمایش عکس می توانید از آن ها استفاده کنید و بخش های تصویر را transparent رسم کنید، توابعی مثل SetLayeredWindowAttributes .
به این شکل می توانید با کیفیت بهتری سایر بخش ها را مخفی کنید تا بهتر رسم شود. (در انتهای مقاله در این باره نیز توضیح داده شده است)