В случае OnPaint
для TForm
я хочу рисовать растровые изображения, которые не покрывают фон или другой нарисованный объект, потому что они имеют прозрачные части.
Если я рисую изображение поверх изображения, это работает.
Но когда я рисую на форме Canvas
, это не работает: белая часть изображения, которая должна быть прозрачной, покрывает другие объекты холста белым квадратомcolor.
Canvas->CopyMode = cmMergePaint ;
Graphics::TBitmap * Image=new Graphics::TBitmap();
Image->Transparent = true;
MainForm->Images->GetBitmap(14, Image);
Canvas->Draw(10,10,Image;
MainForm->Images->GetBitmap(0, Image);
Canvas->Draw(15,15,Image);
Обновление
Когда я рисую на изображении, используя MainForm->Images->Draw(Image->Canvas...)
, я получаю прозрачный квадрат, внутри которого ничего нет, и я могу перемещаться подругие компоненты.
Когда я рисую, используя MainForm->Images->GetBitmap(ImgIndex[HisType]+Rotation, Image)
, я получаю правильное растянутое изображение на форме, но без прозрачных пленок, т.е. его белые части покрывают другие компоненты.
В то время как MainForm->Images->Draw(Canvas, X, Y, ImgIndex[HisType]+Rotation, dsTransparent, itImage);
делает работу, мне нужно растянуть его для этого компонента в зависимости от переменной размера.
TRect DstRect(X,Y, X+32 + ( 1 - Rotation ) * 32 * Size, Y+32 + Rotation * 32 * Size);
Graphics::TBitmap * Image=new Graphics::TBitmap();
Image->Transparent=true;
//MainForm->Images->GetBitmap(ImgIndex[HisType]+Rotation, Image);
MainForm->Images->Draw(Image->Canvas, 0, 0, ImgIndex[HisType]+Rotation, dsTransparent, itImage);
Canvas->StretchDraw(DstRect, Image);
delete Image;
//MainForm->Images->Draw(Canvas, X, Y, ImgIndex[HisType]+Rotation, dsTransparent, itImage);