1
我在窗體上有一個TImgView32
(名爲CityMap),並在其上加載圖像。現在,我創建了一個層(TBitmapLayer
)和借鑑使用Canvas.Ellipse
一個TBitmap32
變量像下面這樣的循環:在圖層中繪製一個透明的橢圓
procedure TfrmMain.Button1Click(Sender: TObject);
var
tmpBmp: TBitmap32;
tmpBL: TBitmapLayer;
begin
tmpBL:= TBitmapLayer.Create(CityMap.Layers);
tmpBmp:= TBitmap32.Create;
with tmpBmp do
begin
//Clear;
SetSize(50, 50);
Canvas.Brush.Color := clYellow;
Canvas.Brush.Style:= bsSolid;
Canvas.Pen.Color := clBlue;
Canvas.Pen.Width := 2;
Canvas.Ellipse(Rect(0, 0, 50, 50));
end;
with tmpBL do
begin
Scaled:=true;
Bitmap.DrawMode:=dmBlend;
tmpBL.Bitmap:=(tmpBmp);
//tmpBmp.DrawTo(tmpBL.Bitmap, 0, 0); This line doesn't work! So using above line instead
end;
//...
end;
的結果是這樣的:
正如你看到的問題是那令人討厭的黑色矩形。如何創建這樣一個結果:
無論如何,如果你正在尋找一種抗鋸齒向量繪圖引擎,我會建議你反穀物幾何圖書館(AGG)。我曾嘗試過當我決定在我們的地圖控件中使用什麼時,GR32_Lines的擴展是我正在處理的,但結果並不如AGG。而且,出於好奇,AGG被用作Mapnik的主要渲染器,其被使用,例如,用於渲染OpenStreetMaps圖塊。 – TLama
感謝您的信息。和你一樣,我嘗試了GR32_Lines來產生反鋸齒結果。但縮放地圖時效果不佳。無論如何,GR32具有很好的功能(例如圖層和轉換)。我可以使用AGG與GR32(IDK有關AGG的任何內容)嗎? – SAMPro
我個人使用['AggPasMod'](http://sourceforge.net/projects/aggpasmod/)包裝器,它附帶一個[''GR32 demo'](http://sourceforge.net/p/aggpasmod /代碼/ 39 /樹/中繼/實施例/ VCL/Agg2D%20%28GR32%29 /)。我沒有嘗試過這個演示,但可以肯定的是,我可以告訴你,你可以像AGG一樣使用TGraphic對象('TAgg2DGraphics'),所以你可以渲染矢量結果,例如與'TCanvas.Draw'方法。 – TLama