首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c# 画图(生成缩略图失真有关问题)

2012-01-15 
c# 画图(生成缩略图失真问题)现在画人员的工作牌。要把相片画在工作牌图片上给定的区域里代码如下:intx170

c# 画图(生成缩略图失真问题)
现在画人员的工作牌。要把相片画在工作牌图片上给定的区域里

代码如下:
int   x   =   170;                       //工作牌图片上给定区域的宽
int   y   =   128;                       //工作牌图片上给定区域的高
//生成缩略图
newimg   =   img.GetThumbnailImage(x,   y,   null,   new   System.IntPtr(0));

//将缩略图画到工作牌图片上
g.DrawImage(newimg,   new   Rectangle(199,   103   +   (240   *   ii),   newimg   Width,   newimg.Height));

高人们进来指点下哦,谢谢了

[解决办法]
newimg = new Bitmap(img,new size(x,y));
[解决办法]
g.DrawImage(newimg, new Rectangle(199, 103 + (240 * ii), newimg Width, newimg.Height));
应该改成图片的真实大小,newimg.Height newimg.Width 这个应该在程序外面就可以知道的
[解决办法]
static float iTop = 128;//y值
static float iLeft = 170;//x值
static float iWidth = 200;//图片宽
static float iHeight = 200;//图片高
private void DrawImage(Image img)
{
float xScale = img.Width/iWidth;//计算x轴缩放
float yScale = img.Height/iHeight;//计算y轴缩放
float Scale = xScale > yScale ? xScale : yScale;//取最大的缩放值
float leftPadding = (iWidth - img.Width / Scale)/2;//x轴偏移量
float topPadding = (iHeight - img.Height / Scale) / 2;//y轴偏移量

using (Graphics g = Graphics.FromHwnd(this.Handle))
{
g.DrawRectangle(new Pen(Color.Black), new Rectangle((int)iLeft-1,(int) iTop-1, (int)iWidth+1,(int) iHeight+1));//画边框
g.DrawImage(img, iLeft+leftPadding, iTop+topPadding, img.Width / Scale, img.Height / Scale);//根据偏移量和缩放绘制图片
}
}
[解决办法]
Mark
[解决办法]
返回image?为什么要返回image?就是缩放而不绘制吗?
new一个根据Scale获取的image,把旧的image绘制到新image上,返回就可以了

热点排行