C# WPF 错误 无法将类型"System.Windows.Media.ImageSource"转换为"System.Drawing.Bitmap"

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF 错误 无法将类型"System.Windows.Media.ImageSource"转换为"System.Drawing.Bitmap"相关的知识,希望对你有一定的参考价值。

C# WPF 错误 无法将类型"System.Windows.Media.ImageSource"转换为"System.Drawing.Bitmap"

参考技术A 不支持这种转换呗。你能说下你转换的逻辑吗?或者说你的需求是什么?追问

我就是想 把 Image上面的图像 转换成 winfrom下的Bitmap 因为函数是从winfrom 移植过来的 现在不好维护

追答

那为啥不直接获取图片所在路径,传个URL应该就可以可行了呀?!

追问

问题是 图片不是在本地的 是拍照出来的 还 要经过我在winfrom下写的函数处理 所以要把Image上面的图像 读取成Bitmap 传给函数来处理

追答

不会是wpf程序获取图像,然后交由winform函数处理,再有wpf成像吧?

追问

嗯 是的 因为程序代码 是从winfrom移植过来的

追答

先搞清楚一件事。你整个项目里是既有winform,wpf还是只有wpf(只是把winform后台代码搬到后台),如果是后者,那么你可以换个思路做原先的东西,毕竟wpf和winform还是有点区别的。

追问

嗯 项目有 WPF做UI winfrom 的现成代码做后台

追答

不能直接搬代码的。除非是只涉及后台数据操作逻辑的。wpf和winform控件结构、数据绑定机制完全不同,不能直接用。既然现在做wpf项目,就要wpf的机制去修改。

追问

好的 谢谢 帮我看看这个问题吧 http://zhidao.baidu.com/question/1753611882133147308.html?quesup2&oldq=1

C#错误(无法将类型'string'隐式转换为'int')[重复]

【中文标题】C#错误(无法将类型\'string\'隐式转换为\'int\')[重复]【英文标题】:C# Error (Cannot Implicitly convert type 'string' to 'int') [duplicate]C#错误(无法将类型'string'隐式转换为'int')[重复] 【发布时间】:2015-03-25 14:58:29 【问题描述】:

请帮忙!我不知道如何解决这个问题。我被困在这个问题上已经有一段时间了。这段代码至少应该是什么样子,错误在第 8-10 行

        int intAmountA = 0;
        int intAmountB = 0;
        int intAmountC = 0;
        decimal decPackageA = 0m;
        decimal decPackageB = 0m;
        decimal decPackageC = 0m;
        decimal decTotal = 0m;

        intAmountA = TxtAmountA.Text;
        intAmountB = TxtAmountB.Text;
        intAmountC = TxtAmountC.Text;

        decPackageA = intAmountA * 150;
        decPackageB = intAmountB * 120;
        decPackageC = intAmountC * 90;

        LblPackageA.Text = decPackageA.ToString("c");
        LblPackageB.Text = decPackageB.ToString("c");
        LblPackageC.Text = decPackageC.ToString("c");

        decTotal = decPackageA + decPackageB + decPackageC;


        LblTotal.Text = decTotal.ToString("c");

【问题讨论】:

【参考方案1】:

你会想了解:

Casting Data Types

两者都是基本任务,但对编程非常重要。

你有几种方法:

intAmount = Convert.ToInt32(txtAmount.Text);
intAmount = int.Parse(txtAmount.Text);

cast 的最简单方法是上述方法。但是,当可能传递无效的用户信息时,就会出现问题。例如,用户传递example 会导致异常。

您需要清理数据。因此,您可以尝试以下方法:

int amount;
if(int.TryParse(txtAmount.Text, out amount))

     // Properly converted amount to an integer.

另一种方法可能是:

int amount = txtAmount.Text.Where(d => char.IsDigit(d));

最安全和最常见的是int.TryParse。但这些都是您应该考虑正确处理数据的方法。

希望这对您有所帮助。

【讨论】:

【参考方案2】:

TxtAmountA.Text 是一个字符串。您正在尝试将变量 intAmountA 设置为字符串值,这是一个整数,因此出现错误。您需要从文本框中的字符串中解析出整数。

intAmountA = int.Parse(TxtAmountA.Text);

但是,请注意,如果 TxtAmountA.Text 中的内容不能转换为整数,则会出现异常。那是你可以使用条件int.TryParse(string value, out integer);

【讨论】:

【参考方案3】:
intAmountA = TxtAmountA.Text;
intAmountB = TxtAmountB.Text;
intAmountC = TxtAmountC.Text;

您正在将字符串类型值分配给 int 类型变量。

这会将字符串值转换为它们的 int 类型表示。 例如"1" => 1

intAmountA = int.Parse(TxtAmountA.Text);
intAmountB = int.Parse(TxtAmountB.Text);
intAmountC = int.Parse(TxtAmountC.Text);

【讨论】:

以上是关于C# WPF 错误 无法将类型"System.Windows.Media.ImageSource"转换为"System.Drawing.Bitmap"的主要内容,如果未能解决你的问题,请参考以下文章

C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable

C# WPF 附加属性 - 错误:“XML 命名空间中不存在该属性”

在 C#(WPF) 中使用 C++ dll

C# 无法将类型 system.DateTime转换成 string[]

在 C# WPF 中发出哔声

C# WPF 如何向combobox控件添加类型为comboboxitem的项?