Главная страница
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.048 c
2-1209908007
Эльф
2008-05-04 17:33
2008.06.01
Высокоточный таймер


2-1209821949
Alex8
2008-05-03 17:39
2008.06.01
БД


2-1210091942
mefodiy
2008-05-06 20:39
2008.06.01
Точность при экспорте в Excel


2-1210656268
Matveih1
2008-05-13 09:24
2008.06.01
Как правильно зарегестрировать класс.


15-1205948557
Express
2008-03-19 20:42
2008.06.01
Компонент для Клавиатурного тренажера