![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Bitmap. Mask. не отображается.
DevilDevil © (2008-05-06 11:13:00)Непонимание вот в чём... думаю, меня быстро ткнут носом в упущение...
есть TBitmap, устанавливаю ему Transparent, у него появляется Маска. Проверяю, действительно создаётся, действительно PixelFormat = pf1bit:
procedure SaveMask(Bmp: TBitmap);
var
B: TBitmap;
begin
B := TBitmap.Create;
B.Handle := Bmp.MaskHandle;
B.SaveToFile('Mask.bmp');
B.Free;
end;
Ставлю перед собой задачу отобразить маску на другом битмапе... вместо маски отображается чёрный прямоугольник, не понимаю, почему.
Что-то типа этого:
MaskDC := CreateCompatibleDC(0 {DestBitmap.Canvas.Handle});
try
SelectObject(MaskDC, Bitmap.MaskHandle);
BitBlt(DestBitmap.Canvas.Handle, X, Y, R.Width, R.Height, MaskDC, 0, 0, SRCCOPY);
finally
DeleteObject(MaskDC);
end;
DevilDevil (2008-05-07 14:19:00) [1]> tesseract © (06.05.08 17:04) [2]
ты недополнял... но это уже не имеет значения.
Вообще говоря, я так и не узнал, как отображать маску... Но я узнад как отображать битмап с учётом маски (функция MaskBlt), что мне в конечном счёте и нужно было.
Тема закрыта.
tesseract (2008-05-06 17:04:00) [2]
> B.Handle := Bmp.MaskHandle;
> B.SaveToFile('Mask.bmp');
Странная такая операция присваивания. Тебе надо не handle присваивать, а маску на B.Canvas отрисовать.
DevilDevil (2008-05-06 11:14:00) [3]извиняюсь, с тегами напартачил