簡體   English   中英

根據其RenderTransform在WPF畫布上繪制圓

[英]Draw circle on wpf canvas according to its RenderTransform

因此,我試圖將比例和平移值設置為wpf canvas渲染變換,然后根據此新變換矩陣繪制一些圓。

我有這樣的代碼。

設置畫布渲染變換比例和平移屬性。

window.canvas.RenderTransform.Value.Scale(xScale, yScale);
window.canvas.RenderTransform.Value.Translate(offsetX, offsetY);

並添加一個這樣的圓圈。

Ellipse circle = new Ellipse()
{
    Width = 5,
    Height = 5,
    Stroke = Brushes.Red,
    StrokeThickness = 8
};
circle.SetValue(Canvas.LeftProperty, (double) x);
circle.SetValue(Canvas.TopProperty,  (double) y);
window.canvas.Children.Add(circle);

但是畫布不會在圓點上應用變換矩陣,該怎么辦?

表達方式

window.canvas.RenderTransform.Value

返回轉換矩陣的副本,因為struct Matrix是值類型,而不是引用類型。 您對副本執行的所有操作都將丟失。

采用

var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
window.canvas.RenderTransform = new MatrixTransform(matrix);

要不就

window.canvas.RenderTransform =
    new MatrixTransform(xScale, 0, 0, yScale, offsetX, offsetY);

如果先前已將MatrixTransform分配給RenderTransform屬性,則還可以設置其Matrix值:

var matrix = new Matrix();
matrix.Scale(xScale, yScale);
matrix.Translate(offsetX, offsetY);
((MatrixTransform)window.canvas.RenderTransform).Matrix = matrix;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM