使用WPF在C#中绘制形状
我正试图用C#画一系列正方形。这是我第一次进入WPF。My使用WPF在C#中绘制形状,c#,wpf,C#,Wpf,我正试图用C#画一系列正方形。这是我第一次进入WPF。MySpaceProbeView类有一个SetModel函数,允许用户在将要渲染的方块上传递数据 一旦设置了模型,SpaceProbeView将迭代作为模型的2D数组。每个单元格都有关于其空间类型的数据,SpaceProbeView根据空间类型设置要绘制的正方形的颜色 使用我现在的代码,它只是在相同的位置绘制正方形,我一直在查看文档,不知道如何调整每个矩形的位置 这是我的SpaceProbeView: using System; using
SpaceProbeView
类有一个SetModel
函数,允许用户在将要渲染的方块上传递数据
一旦设置了模型
,SpaceProbeView
将迭代作为模型的2D数组。每个单元格都有关于其空间类型的数据,SpaceProbeView
根据空间类型设置要绘制的正方形的颜色
使用我现在的代码,它只是在相同的位置绘制正方形,我一直在查看文档,不知道如何调整每个矩形的位置
这是我的SpaceProbeView
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;
namespace SpaceProbe
{
public class SpaceProbeView
{
Window window = new Window();
Canvas canvas = new Canvas();
private int cellSize = 25;
SpaceProbeModel model;
int rowAndColumnSize;
SolidColorBrush emptySpaceBrush = new SolidColorBrush();
SolidColorBrush asteroidBrush = new SolidColorBrush();
SolidColorBrush gravityWellBrush = new SolidColorBrush();
SolidColorBrush gravityInfluencedBrush = new SolidColorBrush();
Brush outlineBrush = System.Windows.Media.Brushes.Black;
public SpaceProbeView(int size)
{
emptySpaceBrush.Color = Colors.Blue;
asteroidBrush.Color = Colors.Brown;
gravityWellBrush.Color = Colors.LightGray;
gravityInfluencedBrush.Color = Colors.Gray;
rowAndColumnSize = size;
window.Title = "Space Probe";
canvas.Width = rowAndColumnSize * cellSize;
canvas.Height = rowAndColumnSize * cellSize;
window.Width = rowAndColumnSize * cellSize;
window.Height = rowAndColumnSize * cellSize;
window.Content = canvas;
window.Show();
}
public void SetModel(SpaceProbeModel aModel)
{
model = aModel;
for (int row = 0; row < rowAndColumnSize; row++)
{
for (int column = 0; column < rowAndColumnSize; column++)
{
Rectangle rect = new Rectangle();
rect.Width = cellSize;
rect.Height = cellSize;
rect.Stroke = outlineBrush;
rect.RenderTransform = new Point(row * cellSize, column * cellSize);
switch (model.cellType[row, column])
{
case SpaceProbeModel.type.asteroid:
rect.Fill = asteroidBrush;
break;
case SpaceProbeModel.type.gravityInfluenced:
rect.Fill = gravityInfluencedBrush;
break;
case SpaceProbeModel.type.gravityWell:
rect.Fill = gravityWellBrush;
break;
case SpaceProbeModel.type.empty:
rect.Fill = emptySpaceBrush;
break;
}
canvas.Children.Add(rect);
}
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Media;
使用System.Windows.Shapes;
命名空间空间探测器
{
公共类SpaceProbeView
{
窗口=新窗口();
画布=新画布();
私人int cellSize=25;
SpaceProbeModel模型;
int行和列大小;
SolidColorBrush emptySpaceBrush=新的SolidColorBrush();
SolidColorBrush=新的SolidColorBrush();
SolidColorBrush gravityWellBrush=新的SolidColorBrush();
SolidColorBrush GravityInfectedBrush=新的SolidColorBrush();
笔刷outlineBrush=System.Windows.Media.Brush.Black;
公共空间ProbeView(整数大小)
{
emptySpaceBrush.Color=Colors.Blue;
颜色=颜色。棕色;
gravityWellBrush.Color=Colors.LightGray;
重力影响画笔。颜色=颜色。灰色;
rowAndColumnSize=大小;
window.Title=“空间探测器”;
canvas.Width=行和列大小*单元格大小;
canvas.Height=行和列大小*单元格大小;
window.Width=行和列大小*单元格大小;
window.Height=行和列大小*单元格大小;
window.Content=canvas;
window.Show();
}
public void SetModel(SpaceProbeModel aModel)
{
模型=模型;
对于(int row=0;row
删除所有这些内容并使用适当的XAML。@HighCore认真吗?是这样做的吗?我对WPF一无所知。认真地开始阅读并查看我的示例,了解如何使用WPF最佳实践(如数据绑定、ItemsControl和DataTemplates)创建图表/形状基于项的UI。@HighCore OK cool。