PDA

View Full Version : تصویر شفاف



realman
چهارشنبه 03 اسفند 1384, 21:54 عصر
سلام.
ببخشید دوستان.یک سوال داشتم.
ایا راهی برای تغییر opacity یا همون شفافیت تصاویر در دلفی وجود داره؟به طوریکه اجزای پشت تصویر قابل مشاهده باشند.
اگر کدی در این رابطه(حتی در زبان های دیکر برنامه نویسی) سراغ دارین ممنون می شم اگر اینجا قرار بدبد.

Touska
پنج شنبه 04 اسفند 1384, 08:11 صبح
با مثال :


Type
TRGB = Record
B , G , R : Byte ;
End ;
PRGB = Array [ 0..0 ] Of TRGB ;
Sline = ^Prgb ;
var
Form1: TForm1;

implementation

{$R *.dfm}
Procedure Trans ( B : TBitmap ; Opacity : Byte = $FF ) ;
Var
P , Q : Sline ;
X , Y : Integer ;
A : TBitmap ;
New_Color : integer ;
Begin
A := Tbitmap.Create ;
A.Assign ( A ) ;
A.PixelFormat := pf24bit ;
For Y := 0 To B.Height-1 Do
Begin
P := B.ScanLine [ Y ] ;
For X := 0 To B.Width-1 Do
Begin
//New_Color := P [ X ].R;
P[x].R:= byte(integer(p[x].R)*Opacity div 255 + (255-Opacity)*255 div 255);
P[x].G:= byte(integer(p[x].G)*Opacity div 255 + (255-Opacity)* 0 div 255);
P[x].B:= byte(integer(p[x].B)*Opacity div 255 + (255-Opacity)* 0 div 255);
End ;
End ;
Form1.Image1.Picture.Bitmap := B ;
End ;

procedure TForm1.Button1Click(Sender: TObject);
Var
R : Trect ;
B : Tbitmap ;
C : Hdc ;
begin
R := Rect ( Image1.Left,Image1.Top,Image1.Left+Image1.Width,Im age1.Top+Image1.Height ) ;
B := Tbitmap.Create ;

Image1.Canvas.CopyRect(B.Canvas.ClipRect,Canvas,Im age1.ClientRect);
Image3.Canvas.Draw(0,0,B);
end;

ms1024
شنبه 06 اسفند 1384, 09:07 صبح
یک راه دیگه هم وجود داره
یک image روی فرم بذار
خصوصیت alphablend مربوط به فرم را true کن
بعد میزان شفافیت را در alphablendvalue وارد کن

realman
شنبه 06 اسفند 1384, 22:18 عصر
یک راه دیگه هم وجود داره
یک image روی فرم بذار
خصوصیت alphablend مربوط به فرم را true کن
بعد میزان شفافیت را در alphablendvalue وارد کن


ممنون از راهنمایی تون.
ولی با این کار بقیه اجزای فرمم هم شفاف میشن.
من این خاصیت رو فقط برای عکس میخوام.
من در حقیقت می خوام تو رویداد MouseEnter عکسم شفافیت اون رو تغییر بدم.