C# bmp图像像素大小

privatevoidForm1_Paint_1(objectsender,PaintEventArgse){for(inti=0;i<10;i++){Bitmapbst... private void Form1_Paint_1(object sender, PaintEventArgs e)
{
for (int i = 0; i < 10; i++)
{
Bitmap bst = new Bitmap(@"C:\Users\Administrator\documents\visual studio 2010\Projects\连连看\连连看\Resources\l"+i.ToString()+".bmp");
e.Graphics.DrawImage(bst, 5+43*i, 5);
}
}

这是我的一段程序,用的图片都是32×32的。可5+43i刚好,如果是5+32i图片就会挤成一团。难道C#的像素单位不一样吗?
展开
 我来答
百度网友66a8d48e5
2013-01-23 · TA获得超过7687个赞
知道大有可为答主
回答量:3002
采纳率:12%
帮助的人:3905万
展开全部
32*96/72,算一下这个结果!

换句话来说,应该是42刚好!如果你认同的情况下,我解释一下!

事实上不同的显示分辨率是不同的,如果采用图象分辨率是,会在编写界面造成很多的麻烦,所以我这里的两个参数不是分辨率,而是大小!而当前vs2010采用的无关分辨率是96点每英寸,也就是说,后面的数字不再是分辨率,而是大小,换句话来说,它的一个单位就是1/96项寸,这样可以保证大小是在不同的分辨率上是相同的大不的。那么换算这个数字时,你可以理解成恒定的数字。

那么在72点/英下做的32象素,应该设置为宽度为(32/72)*96=42。当然如果是320的话,你就要使用420这个数字了!

你理解错误的地方,就是以为drawimage后两个参数是一个象素,其实不是象素,而是大小,不过当前的无关设备分辨率采用的是96点/英寸而已。也就是说,当你遇到这样的计算时,应该科委,它并非是分辨率的,而是在长度与宽度,单位是1/96英寸。包括其他参数一样,都是象素,而是大小。而这个值叫无关设备分辨率,也就是96点每英寸。

换句话来说,这种做法可以保证在不同分辨下,大小是统一的。就是因为存在这样的换算关系。

所以说,C#分辨率还是相同的,但你使用的却不是分辨率,而是大小。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式