银光程序绘制(从Windows Forms转换到Silverlight)

4

我有一个世界(一个PictureBox和一个大小为(rows * columns)的位图,在Windows Forms中从位图创建Graphics),以下是代码:

    bmp = new Bitmap(columns*32, rows*32);
    graphics = Graphics.FromImage(bmp);
    pictureBox1.Size = new Size(columns * 32, rows * 32);
    pictureBox1.Image = bmp;

我用这个来填充Windows表单中的图形。

    private void drawImageInBox(Image src, int boxX, int boxY, int Offset = 0)
    {
        graphics.DrawImage(src, new Point((boxY * 32) + Offset, (boxX * 32) + Offset));
    }

当所有操作完成后,我只需刷新PictureBox即可。

    pictureBox1.Refresh();

我该如何在 Silverlight XAML 中实现这个功能?


你是想将它转换为Silverlight还是WPF? - K Mehta
我正在尝试转换为Silverlight。 - user677607
只是为了确认一下,您想要一个之前使用WinForms编写的桌面应用程序能够作为使用Silverlight的Web应用程序进行访问? - K Mehta
真的,我正在将一个现有的Win From转换为Silverlight,以便我可以在线发布它。 - user677607
@KshitijMehta 让我们在聊天室里继续这个讨论 - user677607
显示剩余2条评论
1个回答

2
你需要这样的东西:
在你的XAML中:
<Grid x:Name="world_grid" Width="100" Height="100">
  <Grid.RowDefinitions>
    <RowDefinition Height="*" />   <!--Repeat this for however many rows you need -->
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" /> <!--Same here, for columns-->
  </Grid.ColumnDefinitions>
</Grid>

在你的代码后端:
for each image you need to add:
  Image img = new Image();
  img.Source = new Uri("some/dir/img.png"); // coding in-place, can't remember syntax
  world_grid.Children.Add(img);
  Grid.SetRow(img, 0); // places this image in row 0
  Grid.SetColumn(img, 5); // places this image in column 5

非常重要的提示:每次“刷新”您的“世界”之前,请确保删除适当的图像,然后再重新添加它们!更好的方法是,您可以在某个数组中跟踪这些图像,并更改它们的行/列。如果需要,可以将图像的可见性设置为隐藏/折叠。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接