
06.12.2012, 10:17
|
Модератор
|
|
Регистрация: 17.04.2008
Сообщения: 8,107
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
|
|
Цитата:
Сообщение от angvelem
Я через GetDIBits (точнее его предшественника) отрисовываю тень, кусок кода естественно на ассемблере.
|
ОК, проблему решил через AlphaBlend. Надо теперь только немного оптимизировть...
Вот эта функция, мож кому пригодится. Нарыл на ExpertsExchange.
Код:
procedure TCutImageFrame.BlendRectangle(Canvas:TCanvas;R:TRect;C:TColor;MixPercent:Byte);
Var
tmpBMP:TBitmap;
Blend:_BLENDFUNCTION;
begin
tmpBMP:=TBitmap.Create;
try
tmpBMP.Width:=1;
tmpBMP.Height:=1;
tmpBMP.Canvas.Pixels[0,0]:=C;
Blend.BlendOp:=AC_SRC_OVER;
Blend.BlendFlags:=0;
Blend.SourceConstantAlpha:=(50+255*MixPercent) Div 100;
Blend.AlphaFormat:=0;
AlphaBlend(Canvas.Handle,R.Left,R.Top,R.Right-R.Left,R.Bottom-R.Top,tmpBMP.Canvas.Handle,0,0,1,1,Blend);
finally
tmpBMP.Free;
end;
end;
|