PDA

View Full Version : شکل فرم



mostafa612003
چهارشنبه 07 آبان 1382, 09:25 صبح
سلام
چگونه می توانیم شکل فرم را عوض کنیم
مثلا شکل فرم مثل یک برگ باشد


خیلی متشکرم

Behzad_Asharkhan
چهارشنبه 07 آبان 1382, 13:37 عصر
سلام

این کد رو نگاه کن.


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)

mostafa612003
چهارشنبه 07 آبان 1382, 13:46 عصر
یعنی چی؟

مهدی کرامتی
چهارشنبه 07 آبان 1382, 14:45 عصر
در ویندوز یک تابع API بنام setwindowrgn وجود دارد که میتواند فرم شما را بشکلهای مختلفی که شما تعریف میکنید در آورد.

نکته در اینستکه شما ابتدا باید شکل موردنظر را با استفاده از توابعی مانند CreatePolygonRgn (که خود این تابع شکل ورودی را از یک ساختار آرایه‌ای مانند p در مثال فوق دربافت میکند) تعریف کنید.

کد فوق را در برنامه‌تان (در واقعه FormCreate فرم اصلی) قرار دهید و نتیجه را در عمل ببینید.

betanam
شنبه 10 آبان 1382, 09:01 صبح
دوست عزیز شما می توانی شکل دلخواه را به صورت یک تصویر بر روی فرم قرار دهی و رنگ فرمت را مثلا سفید کنی سپس در قسمت خواص فرم ویزیبل رنگ مربوطه را true کنی اگز این کار درست انجام دهی در هنگام run کردن شکل فرمت به صورت تصویر انتخابی در می آید
8)

SyntaxCheck
یک شنبه 11 آبان 1382, 10:44 صبح
دوست عزیز Betanam ، میشه کمی توضیح بدی ویزیبل رنگ مربوطه یعنی چی؟ مگه برای هر رنگ خاصیت ویزیبل جدا داریم؟

Behzad_Asharkhan
یک شنبه 11 آبان 1382, 11:30 صبح
سلام

دوست عزیز آقای Betanam تا اونجا که من میدونم روش ایجاد یه فرم به شکل یه تصویر اینه که ناحیه های متعددی تعریف شه و بعد اونا با هم Combine بشن. در مورد روشی که فرمودید هر چی گشتم به جایی نرسیدم. :roll: اگه سورس کد یا مرجعی در اختیار دارید لطفا ارائه بدید. ( یا اقلا کمی توضیح بیشتر...)

Farhad.B.S
یک شنبه 11 آبان 1382, 12:02 عصر
نمیدونم چطوری تا به حال این پراپرتی رو در فرم ها ندیده بودم ، ولی به هر حال خیلی روش جالبی بود !
دردسر های کار با RegionAPIs رو هم نداشت .
منظور ایشون این بود که UseTransparentColor رو true کنید و بعد یه رنگ رو به عنوان TranparentColor معرفی کنید.
بعد پس زمینه فرم رو به اون رنگ ماسکه شده تغییر بدید .

Behzad_Asharkhan
یک شنبه 11 آبان 1382, 13:53 عصر
آفرین :wink:

خیلی جالب بود.

betanam
یک شنبه 11 آبان 1382, 14:27 عصر
دقیقا منظور من همان بود که ذکر کردید

mojtaba_z
یک شنبه 11 آبان 1382, 14:34 عصر
این خاصیت در ویندوز 98 کار نمی کنه اینطور نیست !؟

mostafa612003
چهارشنبه 21 آبان 1382, 14:36 عصر
سلام
خیلی متشکرم
خیلی خوب بود