0
只需創建簡單FireMokey HD的應用程序,把TImage中使用ALIGN = alclient在表格上,並試圖繪製簡單的黑色矩形:德爾福FireMonkey應用程序不能得出簡單的黑色矩形
procedure TForm8.FormCreate(Sender: TObject);
var
c: TCanvas;
begin
Image.Bitmap := TBitmap.Create(ClientWidth, ClientHeight);
c := Image.Bitmap.Canvas;
c.BeginScene;
try
c.Clear(claWhite);
c.Stroke.Color := claBlack;
c.Stroke.Kind := TBrushKind.bkSolid;
c.DrawRect(
TRectF.Create(7,7,ClientWidth-7,ClientHeight-7),
0,0,
[],
1
);
finally
c.EndScene;
end;
end;
而且這是行不通的。矩形的顏色不是黑色,它是一種灰色。角落裏的顏色有一些變化。我是否需要設置其他屬性或這裏有什麼問題? 我嘗試了不同的不透明度值(1,100,255,65535),圖片根本沒有改變,幫助中沒有任何信息,這個選項到底意味着什麼。 已縮放左上角:
還試圖,因爲它實施例中所述使用多邊形。同樣的問題 - 圓角和灰色而不是黑色(不透明度圖像的屬性是1,所有屬性爲默認):
procedure TForm8.Button2Click(Sender: TObject);
var
p1, p2, p3, p4, p5: TPointF;
MyPolygon: TPolygon;
begin
// sets the points that define the polygon
p1.Create(100, 100);
p2.Create(200, 100);
p3.Create(200, 200);
p4.Create(100, 200);
p5.Create(100, 100);
// creates the polygon
SetLength(MyPolygon, 5);
MyPolygon[0] := p1;
MyPolygon[1] := p2;
MyPolygon[2] := p3;
MyPolygon[3] := p4;
MyPolygon[4] := p5;
Image.Bitmap.Canvas.BeginScene;
// draws the polygon on the canvas
Image.Bitmap.Canvas.DrawPolygon(MyPolygon, 50);
Image.Bitmap.Canvas.EndScene;
// updates the bitmap
// Image.Bitmap.BitmapChanged;
end;
你能添加一個標籤用Delphi版本放哪兒你遇到過這個問題嗎?順便說一句。您是否嘗試過關注['這個例子'](http://docwiki.embarcadero.com/CodeExamples/XE2/en/FMXTCanvasDrawFunctions_(德爾福))?我不知道FMX,但是不是'BeginScene'和'EndScene'重要嗎? [自毀評論;請不要回復] – TLama
@TLama:您鏈接中的這些示例已過時。方法BitmapChanged不再可用,它現在處於受保護的部分(這是個好消息,因爲使用EndScene和其他東西都很奇怪)。在這種情況下,BeginScene和EndScene不起作用。這是基本的功能,它很難找到FM的工作,因爲它應該... –
我不知道你說'BeginScene'和'EndScene'沒有幫助的原因,但至少你應該調用這個函數對(並且你現在在你的代碼中忽略它)。請參閱['BeginScene'](http://docwiki.embarcadero.com/Libraries/XE3/en/FMX.Types.TCanvas.BeginScene)參考。有明確的寫法,*在TCanvas上繪製之前調用BeginScene。 要結束繪圖會話,請調用EndScene。* – TLama