1
次のTGPGraphicsのコンテンツをキャンバスにコピーしようとしていますが、動作しません。私はここで何が欠けていますか?あなたは、コンストラクタTGPGraphicsのコンテンツをキャンバスに描画する方法
TGPGraphics.Create(hdc: HDC)
と直接キャンバスにTGPGraphics
を描くことができます
function DrawGlyph(bm: TObject; Canvas: TCanvas; X, Y: Integer): Integer;
var
O: TGPBitmap;
G: TGPGraphics;
begin
if (bm is TGPImage) then
begin
O := TGPBitmap.Create(16, 16, PixelFormat32bppARGB);
try
G := TGPGraphics.Create(O);
try
G.SetCompositingMode(CompositingModeSourceCopy);
G.SetInterpolationMode(InterpolationModeHighQualityBicubic);
G.SetPixelOffsetMode(PixelOffsetModeHighQuality);
G.SetSmoothingMode(SmoothingModeHighQuality);
G.DrawImage(TGPImage(bm), 0, 0, O.GetWidth, O.GetHeight);
BitBlt(Canvas.Handle, X, Y, O.GetWidth, O.GetHeight, G.GetHDC, 0, 0, SRCCOPY);
finally
G.Free;
end;
finally
O.Free;
end;
end;
end;
あなたは中間TGPBitmapを使用したいのはなぜ? G:= TGPGraphics.Create(Canvas.Handle)に変更すると – EugeneK
イメージをキャンバスに描画する前に16x16にサイズ変更したい –
キャンバスに直接描画してもサイズが変更されます – EugeneK