Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
15-1208419699
tesseract
2008-04-17 12:08
2008.06.01
Чего-то Дума мутит в нашу сторону.


15-1208744609
Slider007
2008-04-21 06:23
2008.06.01
С днем рождения ! 21 апреля 2008 понедельник


15-1208277523
{RASkov}
2008-04-15 20:38
2008.06.01
DVD


3-1198073795
Kolan
2007-12-19 17:16
2008.06.01
Как проверить что в базе есть таблица?


2-1210491759
x
2008-05-11 11:42
2008.06.01
своя 32-битная иконка