Форум: "WinAPI";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Внизмаска+картинка=результат Найти похожие ветки
← →
race1 (2005-01-05 10:22) [0]как можно, имея исходный канвас (TCanvas), битовую маску и destination-канвас нарисовать на последнем исходный канвас, используя битовую маску? лучше если api функциями
← →
MBo © (2005-01-05 10:29) [1]MaskBlt
← →
race1 (2005-01-05 10:37) [2]а примерчика нету? я вроде всё по справке делаю, даже немного из vcl"я взял, но "параметр указан неверно"...
← →
MBo © (2005-01-05 11:24) [3]Вот два способа, есть и другие, например, с помощью BitBlt несколько раз, что совместимо с Win9X (PlgBlt и MaskBlt там не поддерживается)
procedure TForm1.Button4Click(Sender: TObject);
var
B,Mask : TBitmap;
P:array[0..3] of TPoint;
begin
B := TBitmap.Create;
Mask := TBitmap.Create;
B.LoadFromFile("e:\4.bmp");
Canvas.Draw(0,0,b);
Mask.PixelFormat:=pf1bit;
Mask.Width:=B.Width;
Mask.Height:=B.Height;
PatBlt(Mask.Canvas.Handle,0,0,B.Width,B.Height,BLACKNESS);
Mask.Canvas.Ellipse(10,10,B.Width-10,B.Height-10);
Canvas.Draw(B.Width+10,0,Mask);
P[0]:=Point(B.Width*2+20,0);
P[1]:=Point(B.Width*3+20,0);
P[2]:=Point(B.Width*2+20,B.Height);
PlgBlt(Canvas.Handle,P,B.Canvas.Handle,0,0,B.Width,B.Height,MAsk.Handle,0,0);
MaskBlt(Canvas.Handle,B.Width*3+30,0,B.Width,B.Height,B.Canvas.Handle,
0,0,Mask.Handle,0,0,MakeRop4(SRCCOPY,PATCOPY));
B.Free;
Mask.Free;
end;
см. также TransparentStretchBlt в Graphics.pas
← →
race1 (2005-01-05 12:25) [4]спасибо. у меня ошибка была в том, что один из параметров был TCanvas вместо HDC
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c