سلام
چگونه می توانیم شکل فرم را عوض کنیم
مثلا شکل فرم مثل یک برگ باشد
خیلی متشکرم
سلام
چگونه می توانیم شکل فرم را عوض کنیم
مثلا شکل فرم مثل یک برگ باشد
خیلی متشکرم
سلام
این کد رو نگاه کن.
procedure TForm1.FormCreate(Sender: TObject);
Var
p: Array[0..7] of TPoint;
Rgn: Hrgn;
begin
color := clBlack;
p[0].x := 20; p[0].y := 20;
p[1].x := 170; p[1].y := 120;
p[2].x := 320; p[2].y := 20;
p[3].x := 220; p[3].y := 170;
p[4].x := 320; p[4].y := 320;
p[5].x := 170; p[5].y := 220;
p[6].x := 20; p[6].y := 320;
p[7].x := 120; p[7].y := 170;
Rgn := CreatePolygonRgn(p,8,ALTERNATE);
setwindowrgn(form1.Handle,Rgn,True);
end;
برای شکلهای دیگه هم باید بتونی یه region مناسب تعریف کنی. 8)
یعنی چی؟
در ویندوز یک تابع API بنام setwindowrgn وجود دارد که میتواند فرم شما را بشکلهای مختلفی که شما تعریف میکنید در آورد.
نکته در اینستکه شما ابتدا باید شکل موردنظر را با استفاده از توابعی مانند CreatePolygonRgn (که خود این تابع شکل ورودی را از یک ساختار آرایهای مانند p در مثال فوق دربافت میکند) تعریف کنید.
کد فوق را در برنامهتان (در واقعه FormCreate فرم اصلی) قرار دهید و نتیجه را در عمل ببینید.
دوست عزیز شما می توانی شکل دلخواه را به صورت یک تصویر بر روی فرم قرار دهی و رنگ فرمت را مثلا سفید کنی سپس در قسمت خواص فرم ویزیبل رنگ مربوطه را true کنی اگز این کار درست انجام دهی در هنگام run کردن شکل فرمت به صورت تصویر انتخابی در می آید
8)
دوست عزیز Betanam ، میشه کمی توضیح بدی ویزیبل رنگ مربوطه یعنی چی؟ مگه برای هر رنگ خاصیت ویزیبل جدا داریم؟
سلام
دوست عزیز آقای Betanam تا اونجا که من میدونم روش ایجاد یه فرم به شکل یه تصویر اینه که ناحیه های متعددی تعریف شه و بعد اونا با هم Combine بشن. در مورد روشی که فرمودید هر چی گشتم به جایی نرسیدم. :roll: اگه سورس کد یا مرجعی در اختیار دارید لطفا ارائه بدید. ( یا اقلا کمی توضیح بیشتر...)
نمیدونم چطوری تا به حال این پراپرتی رو در فرم ها ندیده بودم ، ولی به هر حال خیلی روش جالبی بود !
دردسر های کار با RegionAPIs رو هم نداشت .
منظور ایشون این بود که UseTransparentColor رو true کنید و بعد یه رنگ رو به عنوان TranparentColor معرفی کنید.
بعد پس زمینه فرم رو به اون رنگ ماسکه شده تغییر بدید .
آفرین :wink:
خیلی جالب بود.
دقیقا منظور من همان بود که ذکر کردید
این خاصیت در ویندوز 98 کار نمی کنه اینطور نیست !؟
سلام
خیلی متشکرم
خیلی خوب بود