【问题标题】:Is there a picturebox.graphics() winforms equivalent to imagebox in WPF?WPF 中是否有与 imagebox 等效的 picturebox.graphics() winforms?
【发布时间】:2020-07-08 01:01:03
【问题描述】:

所以我有这行来自 winforms 的代码,我想将其转换为 WPF。现在我目前被这个功能困住了。以下是我需要从 winforms 转换为 WPF 的代码,因为 WPF 没有图片框工具。

             Graphics g = pictureBox1.CreateGraphics();
             g.Clear(Color.AliceBlue);
             pictureBox1.Image = newimage;//Image.FromFile(thumb);

我尝试将picturebox1.CreatedGraphics() 换成 imagebox 工具,但它没有 createdgraphics 功能。

不胜感激。

谢谢。

【问题讨论】:

  • 这个有什么用:Graphics g = pictureBox1.CreateGraphics(); g.Clear(Color.AliceBlue);?你不能设置pictureBox1.BackColor = Color.AliceBlue吗? Image(如果这就是您所指的)没有背景,您可以使用网格、边框或其他方式创建一个。使用其Source 属性来指定 ImageSource 或 Resource。
  • 因为这不是我的代码,我的工作是将它从 winforms 转换为 WPF,我假设它会设置一个框或占位符来放置图像文件 (newimage)。这可以解释picturebox1.image = newimage。如果我错了,请纠正我。
  • 该代码的唯一可能用法是在不触发 Paint 事件的情况下更改控件背景的颜色(如前所述,与 pictureBox1.BackColor = [Some Color] 相同,它将改为引发 Paint 事件)。一旦你设置了一个新的图像,它就会被渲染为静音(它会立即引发 Paint 事件)。或者您以任何方式使表单或控件本身无效。即,如果您不立即调用g.Dispose() 并且您不处理前一个图像(当然,如果分配了一个图像),那么这将是无用的并且浪费图形资源。无论如何,不​​是你的问题。

标签: c# wpf winforms


【解决方案1】:

您似乎需要:

  1. 创建边框并将Background 设置为Colors.AliceBlue
  2. 创建一个名为pictureBox1Image 作为Border 的子级,并设置Source = new BitmapImage(new Url(path-to-image))

<Border Background="AliceBlue">
 <Image Source = "path-to-image"/>
</Border>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 2012-02-26
    • 2016-01-11
    • 1970-01-01
    相关资源
    最近更新 更多