gpt4 book ai didi

wpf - 在 WPF 应用程序中使用 GDI+

转载 作者:行者123 更新时间:2023-12-04 06:32:50 25 4
gpt4 key购买 nike

我正在用 WPF 应用程序编写一个模拟生活游戏的程序。
如何执行 GDI+ 之类的图形操作以创建包含单元格网格的图像?

(通常,在 WinForms 中,我会知道如何执行此操作)。

编辑:
我使用了这个代码:

            WriteableBitmap wb = new WriteableBitmap(width * 5, height * 5, 100, 100, new PixelFormat(), new BitmapPalette(new List<Color> { Color.FromArgb(255, 255, 0, 0) }));
wb.WritePixels(new Int32Rect(0, 0, 5, 5), new IntPtr(), 3, 3);
Background.Source = wb;

背景是 System.Windows.Controls.Image控制

最佳答案

我认为您使用 WriteableBitmap.WritePixel 让事情变得更难。使用 Shapes 或 RendterTargetBitmap 和 DeviceContext 进行绘图时,您将有更好的时间。

下面是一些关于如何使用此方法进行绘制的代码。

MainForm 的 XAML:

<Grid>
<Image Name="Background"
Width="200"
Height="200"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>

MainForm 的代码隐藏:
private RenderTargetBitmap buffer;
private DrawingVisual drawingVisual = new DrawingVisual();

public MainWindow()
{
InitializeComponent();
}

protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
buffer = new RenderTargetBitmap((int)Background.Width, (int)Background.Height, 96, 96, PixelFormats.Pbgra32);
Background.Source = buffer;
DrawStuff();
}

private void DrawStuff()
{
if (buffer == null)
return;

using (DrawingContext drawingContext = drawingVisual.RenderOpen())
{
drawingContext.DrawRectangle(new SolidColorBrush(Colors.Red), null, new Rect(0, 0, 10, 10));
}

buffer.Render(drawingVisual);
}

根据您的需要调整图像的宽度/高度。你所有的绘图逻辑都应该在 using 语句中。您会发现 DrawingContext 上的方法比 WritePixel 更灵活且更易于理解。每当您想触发重绘时调用“DrawStuff”。

关于wpf - 在 WPF 应用程序中使用 GDI+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5182616/

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