PDA

View Full Version : Image شیشه ای



farzane_fn
سه شنبه 21 مهر 1388, 11:08 صبح
سلام دوستان. آیا می شه کاری کرد که تصویری که روی فرم قرار می دهیم حالت شیشه ای و شفاف داشته باشه؟ برای اینکه این تصویر رو بک گروند فرمم قرار بدم.ممنون می شم اگه راهنمایی کنین..

behzad_dr
سه شنبه 21 مهر 1388, 13:15 عصر
ببشخید شیشه ای و براق یعنی چی ؟!:متعجب:

خوب شما می تونید از image استفاده کنید برای تصویر روی فرم .

خود فرم رو میشه به قول شما شیشه ای و براق کرد طوری که پشت اونو حتی ببینی !

young_man1365
سه شنبه 21 مهر 1388, 13:19 عصر
برای این کار تو فرمی که میخواید این کار رو انجام بدید خاصیت transparent color فرم را true و transparent color value را رنگی قرار بدید که میخواید شفاف یا شیشه ای نشون داده بشه. فقط از رنگی برای شفاف کردن استفاده کنید که در جای دیگه اون فرم استفاده نشده باشه. (رنگی که حدف میشه باید متفاوت باشه)

Saeed_m_Farid
سه شنبه 21 مهر 1388, 15:12 عصر
برای این کار تو فرمی که میخواید این کار رو انجام بدید خاصیت transparetn color فرم را true و transparent color value را رنگی قرار بدید که میخواید شفاف یا شیشه ای نشون داده بشه. فقط از رنگی برای شفاف کردن استفاده کنید که در جای دیگه اون فرم استفاده نشده باشه. (رنگی که حدف میشه باید متفاوت باشه)
دوست عزیز، اینطوری که شما نوشتین بچه ها اشتباه می گیرن؛ اینها property هستن و باید چسبیده نوشته بشن، در ضمن قیل اینکار باید Transparent خود عکس هم True بشه.

یه موضوع دیگه اینکه اگه بخواهید حاشیه های فرم هم از بین بره باید Region فرمتون رو برابر Region عکس قرار بدید و BorderStyle رو bsNone قرار بدین تا یه فرم شفاف داشته باشید.

خلاصه اش میشه این کد: (با فرض اینکه یه یه TImage رو فرمتون انداخته باشید و رنگ Transparent (پس زمینه) سفید باشه) :

procedure TForm1.FormCreate(Sender: TObject) ;
var
FullRgn, ClientRgn, ImageRgn: THandle;
Margin, X, Y: Integer;
begin

BorderStyle := bsNone;
TransparentColor := True;
TransparentColorValue := clWhite;

Image1.Transparent := True;

Margin := (Width - ClientWidth) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height) ;
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn
(X, Y, X + ClientWidth, Y + ClientHeight) ;
CombineRgn(FullRgn, FullRgn, ClientRgn, RGN_DIFF) ;
X := X + Image1.Left;
Y := Y + Image1.Top;
ImageRgn := CreateRectRgn
(X, Y, X + Image1.Width, Y + Image1.Height) ;
CombineRgn(FullRgn, FullRgn, ImageRgn, RGN_OR) ;
SetWindowRgn(Handle, FullRgn, True) ;
end;


یه حالت دیگه هم میشه فرض کرد که AlphaBlend فرم هست، یعنی هرچی رو فرم باشه مهم نیست، فقط شفافیت فرم رو بشه عوض کرد که با یه خاصیت AlphaBlendValue که پیش فرضش 255 هست مشخص میشه؛ هرچقدر کمترش کنید فرمتون شفاف تر میشه :

procedure TForm1.FormCreate(Sender: TObject) ;
begin
Form1.AlphaBlend := True;
Form1.AlphaBlendValue := Form1.AlphaBlendValue - 50;
end;


موفق باشید.

young_man1365
سه شنبه 21 مهر 1388, 15:34 عصر
چند مورد:
1- خاصیت = property
2- وقتی transtarent فرم رو true کنی نیازی به تنظیم این خاصیت تو image نیست(یه جور ارث بری)
3- به جای استفاده از کدهای region تمیز تر و ساده تره که از alClient در خاصیت align کامپوننت image برای بک گراند کردن و یا تنظیم خاصیت Anchors برای تنظبم حاشیه ها استفاده کرد.

خیلی ممنون از لطفتون دوست عزیز
موفق باشی