gpt4 book ai didi

wpf - 如何在WPF中的特定x,y屏幕位置绘制矩形?

转载 作者:行者123 更新时间:2023-12-04 05:19:31 25 4
gpt4 key购买 nike

在C#中,WPF创建了一个矩形:

        Rectangle myRgbRectangle = new Rectangle();
myRgbRectangle.Width = 1;
myRgbRectangle.Height = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();

是的,我真的只是希望它是1像素乘1像素。我想根据可变高度更改颜色,如下所示:
        mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, (byte)height);
myRgbRectangle.Fill = mySolidColorBrush;

现在,如何在屏幕上的特定x,y位置绘制?我的MainWindow.xaml上确实有一个网格(myGrid)。

谢谢!

这是相关的代码:
        myRgbRectangle.Width = 1;
myRgbRectangle.Height = 1;
SolidColorBrush mySolidColorBrush = new SolidColorBrush();

int height;
for (int i = 0; i < ElevationManager.Instance.heightData.GetLength(0); i++)
for (int j = 0; j < ElevationManager.Instance.heightData.GetLength(1); j++)
{
height = ElevationManager.Instance.heightData[i, j] / 100;
// Describes the brush's color using RGB values.
// Each value has a range of 0-255.
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, (byte)height);
myRgbRectangle.Fill = mySolidColorBrush;

myCanvas.Children.Add(myRgbRectangle);
Canvas.SetTop(myRgbRectangle, j);
Canvas.SetLeft(myRgbRectangle, i);

并引发此错误:指定的Visual已经是另一个Visual的子级或CompositionTarget的根。

最佳答案

您需要使用 Canvas 而不是 Grid 。您可以使用坐标来将元素定位在Canvas中,而将列和行定位在Grid中。

Canvas 的定义:

Defines an area within which you can explicitly position child elements by using coordinates that are relative to the Canvas area.



然后,您将使用像这样的 Canvas.SetTop Canvas.SetLeft 属性(假设您的 Canvas 名为 myCanvas):
 myCanvas.Children.Add(myRgbRectangle);
Canvas.SetTop(myRgbRectangle, 50);
Canvas.SetLeft(myRgbRectangle, 50);

编辑

根据您的编辑,就像我说过您要多次添加相同的矩形一样。每次添加时,都需要在For循环中创建它。这样的事情。
for (int i = 0; i < ElevationManager.Instance.heightData.GetLength(0); i++) 
for (int j = 0; j < ElevationManager.Instance.heightData.GetLength(1); j++)
{
Rectangle rect = new Rectangle();
rect.Width = 1;
rect.Height = 1;
height = ElevationManager.Instance.heightData[i, j] / 100;
// Describes the brush's color using RGB values.
// Each value has a range of 0-255.
mySolidColorBrush.Color = Color.FromArgb(255, 0, 0, (byte)height);
rect.Fill = mySolidColorBrush;

myCanvas.Children.Add(rect);
Canvas.SetTop(rect, j);
Canvas.SetLeft(rect, i);
}

关于wpf - 如何在WPF中的特定x,y屏幕位置绘制矩形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12763441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com