Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
ВнизBitmap. Mask. не отображается. Найти похожие ветки
← →
DevilDevil © (2008-05-06 11:13) [0]Непонимание вот в чём... думаю, меня быстро ткнут носом в упущение...
есть 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-06 11:14) [1]извиняюсь, с тегами напартачил
← →
tesseract © (2008-05-06 17:04) [2]
> B.Handle := Bmp.MaskHandle;
> B.SaveToFile("Mask.bmp");
Странная такая операция присваивания. Тебе надо не handle присваивать, а маску на B.Canvas отрисовать.
← →
DevilDevil © (2008-05-07 14:19) [3]> tesseract © (06.05.08 17:04) [2]
ты недополнял... но это уже не имеет значения.
Вообще говоря, я так и не узнал, как отображать маску... Но я узнад как отображать битмап с учётом маски (функция MaskBlt), что мне в конечном счёте и нужно было.
Тема закрыта.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c