C# Graphics.DrawImage(Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit)XP SP3抛出未实现
我用它打印一份报告的背景,在win7、win8下都没问题,在XPSP3下测了会抛出未实现的异常,查了下其对framework的要求,4.0以下没说支持,4.0明确说支持,...
我用它打印一份报告的背景,在win7、win8下都没问题,在XP SP3下测了会抛出未实现的异常,查了下其对framework的要求,4.0以下没说支持,4.0明确说支持,将VS2008下framework3.5的环境用VS2010升级为4.0,还是不能解决!请问大侠女侠们,是否遇到过?或有什么好的解决方案?在下感激不尽!因为现在用XP的人还是有相当部分的,最好把这个解决了。
我的framework3.5升级为4.0的步骤:在VS2010里将项目的属性-->应用程序-->目标框架设为4.0,打包程序依赖项属性设为4.0,属性里系统必备选上4.0。是不是少了什么步骤?这样可不可以升级framework? 展开
我的framework3.5升级为4.0的步骤:在VS2010里将项目的属性-->应用程序-->目标框架设为4.0,打包程序依赖项属性设为4.0,属性里系统必备选上4.0。是不是少了什么步骤?这样可不可以升级framework? 展开
2个回答
展开全部
人去楼台凉 何处能取暖
情空一场 唯剩回忆留香
城中的小巷 没落不堪
雕花的回廊 斑驳着月圆
雨丝丝凉 忧伤在笼烟
一直蔓延 朝着有你的方向
我等时光重现 望见你旧颜
情空一场 唯剩回忆留香
城中的小巷 没落不堪
雕花的回廊 斑驳着月圆
雨丝丝凉 忧伤在笼烟
一直蔓延 朝着有你的方向
我等时光重现 望见你旧颜
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我不知道你详细阅读了MSDN中与之相关的一些说明没有,我复制如下,供你参考。原文链接我就不贴出来,免得百度不通过我的回答,括号中是我的说明。
版本信息
.NET Framework
受以下版本支持:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0
.NET Framework Client Profile
受以下版本支持:4、3.5 SP1
(因此,基本上对于所有的.net framework来说,该方法都是受支持的)
平台
Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)
(注意看这里,并没有XP SP3的平台支持。最低版本是Vista,这可能是你程序不能运行,并抛出未实现的异常。)
.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求。
顺便帮你看了一下你该方法的实现:
该方法调用了如下方法:
public void DrawImage(Image image, int x, int y, Rectangle srcRect, GraphicsUnit srcUnit)
{
if (image == null)
{
throw new ArgumentNullException("image");
}
int errorStatus = SafeNativeMethods.Gdip.GdipDrawImagePointRectI(new HandleRef(this, this.NativeGraphics), new HandleRef(image, image.nativeImage), x, y, srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height, (int) srcUnit);
this.IgnoreMetafileErrors(image, ref errorStatus);
this.CheckErrorStatus(errorStatus);
}
后面的CheckErrorStatus方法中,调用了void CheckErrorStatus(int status)函数,检查错误状态,函数中有错误会抛出throw SafeNativeMethods.Gdip.StatusException(status);根据status值,case 6:
return new NotImplementedException(SR.GetString("GdiplusNotImplemented"));
这个估计就是你的异常出现的原因。详细的代码可使用Reflector检阅System.Drawing.dll我查看的是4.0版本,不同版本实现代码可能有差别。
版本信息
.NET Framework
受以下版本支持:4.5.2、4.5.1、4.5、4、3.5、3.0、2.0、1.1、1.0
.NET Framework Client Profile
受以下版本支持:4、3.5 SP1
(因此,基本上对于所有的.net framework来说,该方法都是受支持的)
平台
Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2(支持带 SP1 或更高版本的服务器核心角色;不支持 Itanium)
(注意看这里,并没有XP SP3的平台支持。最低版本是Vista,这可能是你程序不能运行,并抛出未实现的异常。)
.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参阅.NET Framework 系统要求。
顺便帮你看了一下你该方法的实现:
该方法调用了如下方法:
public void DrawImage(Image image, int x, int y, Rectangle srcRect, GraphicsUnit srcUnit)
{
if (image == null)
{
throw new ArgumentNullException("image");
}
int errorStatus = SafeNativeMethods.Gdip.GdipDrawImagePointRectI(new HandleRef(this, this.NativeGraphics), new HandleRef(image, image.nativeImage), x, y, srcRect.X, srcRect.Y, srcRect.Width, srcRect.Height, (int) srcUnit);
this.IgnoreMetafileErrors(image, ref errorStatus);
this.CheckErrorStatus(errorStatus);
}
后面的CheckErrorStatus方法中,调用了void CheckErrorStatus(int status)函数,检查错误状态,函数中有错误会抛出throw SafeNativeMethods.Gdip.StatusException(status);根据status值,case 6:
return new NotImplementedException(SR.GetString("GdiplusNotImplemented"));
这个估计就是你的异常出现的原因。详细的代码可使用Reflector检阅System.Drawing.dll我查看的是4.0版本,不同版本实现代码可能有差别。
更多追问追答
追问
感谢你的详细回答。此函数framework3.5和4.0版本平台说明我都看过,正因为3.5不支持4.0支持我才升级为4.0的,函数底层实现好像也没啥用吧?可能我的升级过程有问题?除过在VS2010里将项目的属性-->应用程序-->目标框架设为4.0,打包程序依赖项属性设为4.0,属性里系统必备选上4.0还需要做什么?难道还没升级为4.0?
追答
不是.Net Framework不支持,而是平台不支持。.NET Framework Client Profile
4、3.5 SP1都支持,但是你再看看平台:Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(不支持服务器核心角色), Windows Server 2008 R2,可以发现根本没有XP版本的平台支持,所以才运行失败,你看看能不能考虑使用别的方式实现吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询