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#的像素单位不一样吗? 展开
{
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#的像素单位不一样吗? 展开
展开全部
32*96/72,算一下这个结果!
换句话来说,应该是42刚好!如果你认同的情况下,我解释一下!
事实上不同的显示分辨率是不同的,如果采用图象分辨率是,会在编写界面造成很多的麻烦,所以我这里的两个参数不是分辨率,而是大小!而当前vs2010采用的无关分辨率是96点每英寸,也就是说,后面的数字不再是分辨率,而是大小,换句话来说,它的一个单位就是1/96项寸,这样可以保证大小是在不同的分辨率上是相同的大不的。那么换算这个数字时,你可以理解成恒定的数字。
那么在72点/英下做的32象素,应该设置为宽度为(32/72)*96=42。当然如果是320的话,你就要使用420这个数字了!
你理解错误的地方,就是以为drawimage后两个参数是一个象素,其实不是象素,而是大小,不过当前的无关设备分辨率采用的是96点/英寸而已。也就是说,当你遇到这样的计算时,应该科委,它并非是分辨率的,而是在长度与宽度,单位是1/96英寸。包括其他参数一样,都是象素,而是大小。而这个值叫无关设备分辨率,也就是96点每英寸。
换句话来说,这种做法可以保证在不同分辨下,大小是统一的。就是因为存在这样的换算关系。
所以说,C#分辨率还是相同的,但你使用的却不是分辨率,而是大小。
换句话来说,应该是42刚好!如果你认同的情况下,我解释一下!
事实上不同的显示分辨率是不同的,如果采用图象分辨率是,会在编写界面造成很多的麻烦,所以我这里的两个参数不是分辨率,而是大小!而当前vs2010采用的无关分辨率是96点每英寸,也就是说,后面的数字不再是分辨率,而是大小,换句话来说,它的一个单位就是1/96项寸,这样可以保证大小是在不同的分辨率上是相同的大不的。那么换算这个数字时,你可以理解成恒定的数字。
那么在72点/英下做的32象素,应该设置为宽度为(32/72)*96=42。当然如果是320的话,你就要使用420这个数字了!
你理解错误的地方,就是以为drawimage后两个参数是一个象素,其实不是象素,而是大小,不过当前的无关设备分辨率采用的是96点/英寸而已。也就是说,当你遇到这样的计算时,应该科委,它并非是分辨率的,而是在长度与宽度,单位是1/96英寸。包括其他参数一样,都是象素,而是大小。而这个值叫无关设备分辨率,也就是96点每英寸。
换句话来说,这种做法可以保证在不同分辨下,大小是统一的。就是因为存在这样的换算关系。
所以说,C#分辨率还是相同的,但你使用的却不是分辨率,而是大小。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询