微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – Silverlight Programmatical Drawing(从Windows Forms转换为Silverlight)

我有一个世界(一个PictureBox一个大小(行*列)的位图和从 Windows窗体中的位图创建图形)以下是代码,

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中实现这一目标?

解决方法

你会想要这样的东西:

在你的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

一个非常重要的注意事项:每次“刷新”您的“世界”时,请确保在重新添加之前删除相应的图像!更好的是,您可以在某些数组中跟踪这些图像,并更改其行/列.如果需要,可以将图像的可见性设置为隐藏/折叠.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐