社区
C#
帖子详情
C# 怎样让屏幕显示的图片大小与实际物理尺寸一致?
~王者归来~
2016-05-23 07:10:31
我发现,设置的图片大小是80*80 (毫米),但是实际在屏幕上测量得到的却是8.5*8.5,怎样编程能保证不同的显示器都一致呢?
...全文
460
9
打赏
收藏
C# 怎样让屏幕显示的图片大小与实际物理尺寸一致?
我发现,设置的图片大小是80*80 (毫米),但是实际在屏幕上测量得到的却是8.5*8.5,怎样编程能保证不同的显示器都一致呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
弹指神功
2018-12-28
打赏
举报
回复
class GetPixSize
{
#region Win32 API
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr ptr);
[DllImport("gdi32.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
[DllImport("user32.dll", EntryPoint = "ReleaseDC")]
static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDc);
#endregion
#region DeviceCaps常量
const int HORZSIZE = 4;
const int VERTSIZE = 6;
const int LOGPIXELSX = 88;
const int LOGPIXELSY = 90;
const int DESKTOPVERTRES = 117;
const int DESKTOPHORZRES = 118;
#endregion
public static double GetPixWidth(double mm)
{
IntPtr hdc = GetDC(IntPtr.Zero);
int mmDeskWidth = GetDeviceCaps(hdc, HORZSIZE);
int pxDeskWidth = GetDeviceCaps(hdc, DESKTOPHORZRES);
int xDpi = GetDeviceCaps(hdc, LOGPIXELSX);
double scaleX = xDpi / 96.0;
double pxCountPermm = 1.0 * pxDeskWidth / mmDeskWidth;
double pxCount = pxCountPermm * mm / scaleX;
ReleaseDC(IntPtr.Zero, hdc);
return pxCount;
}
public static double GetPixHeight(double mm)
{
IntPtr hdc = GetDC(IntPtr.Zero);
int mmDeskHeight = GetDeviceCaps(hdc, VERTSIZE);
int pxDeskHeight = GetDeviceCaps(hdc, DESKTOPVERTRES);
int yDpi = GetDeviceCaps(hdc, LOGPIXELSY);
double scaleY = yDpi / 96.0;
double pxCountPermm = 1.0 * pxDeskHeight / mmDeskHeight;
double pxCount = pxCountPermm * mm / scaleY;
ReleaseDC(IntPtr.Zero, hdc);
return pxCount;
}
}
Milo米啊米啊米
2016-05-24
打赏
举报
回复
如果没有理解错的话,你是想所有的屏幕上显示图片都是80*80mm吧。如果是这样的话,你的问题没描述清楚。 在屏幕上图像的大小是以像素为单位的,所以首先得知道毫米和像素之间的转换。 象素数 / DPI = 英寸数 英寸数 * 25.4 = 毫米数 DPI是每英寸多少像素点 因此 1毫米=DPI/25.4 个像素,80毫米=80*DPI/25.4个像素。所以你设置图片大小之前先要获得屏幕的DPI,然后算出显示80毫米需要的像素,设置图像大小。如果是WPF的话最好设置图像显示控件的SnapsToDevicePixels =true
jiaoshiyao
2016-05-24
打赏
举报
回复
CSDN完了,不会有大牛了
万婷
2016-05-24
打赏
举报
回复
取图片的分辨率改控件的大小
xuzuning
2016-05-24
打赏
举报
回复
不要冒充大头鬼 DPI = 96 80毫米=80*DPI/25.4个像 = 302.36220472441 取整(无法设置小数像素) 为 302 运行后,实测宽度为 85mm
圣殿骑士18
2016-05-24
打赏
举报
回复
怎么看都像伪需求
NE_1983
2016-05-24
打赏
举报
回复
<div style="width:100%;float:right"> <img class="imgShow" src='@(!string.IsNullOrWhiteSpace(Model.thumbnail) ? Model.thumbnail : "Images/nopic.png")' width="200px" height="200px" /></div> 你换算成像素
南天空
2016-05-23
打赏
举报
回复
屏幕上的长宽是用像素和分辨率来确定的,设计的时候如果想让显示的是实际尺寸,那么就放一个一样大的控件,铺满。不同屏幕下要想显示效果一样,需要支持自动缩放。WPF ViewBox。winform程序很难实现
牧歌ing
2016-05-23
打赏
举报
回复
你都设置成死的了还能变?
C#
零基础入门课程
课程主要包括以下几个方面:
C#
语言简介与开发环境搭建:介绍
C#
语言的特点、应用场景和优势,并教授如何搭建
C#
开发环境,选择和使用常用工具。
C#
基础语法:详细讲解
C#
的基本语法规则和代码结构,包括变量和数据类型...
截图像素大小和
实际
图片大小
不同
jpg和png的区别
C#
SolidWorks 二次开发 API --- 实例:屏幕上1:1显示零件
这个功能很多年前就有人提过,这只是其中一个:https://forum.solidworks.com/message/878652 因为现在的屏幕越来越大,设计好的零件可能 需要按照料模型
实际
尺寸
,投影到屏幕上。 做这个功能是很早之前有人有这种需求,问我能不能做到,因为他们需要在一个超大的电视上显示
实际
的产品大小,用来介绍产品,经过我的研究,solidworks中显示有个内置比例,并且当so...
C#
实现无
物理
边距真正可打印区域的绘图\打印程序开发
经常在开发
实际
的应用程序中,需要用到图形绘制和打印程序。如何实现完整的精确打印和绘图是需要注意许多细节地方的。最近在遇到打印问题的时候,仔细研究一阵,总结这篇博文,写得有点杂乱,看文要还请费点神。基本功能:窗体绘图与鼠标交互 打印预览与打印输出开发平台:VisualStudio 2010 (
C#
)1绘图坐标系统1.1绘图系统坐标转换(屏幕窗口/打印机) 绘图程序涉及到多种坐标系统,总体上可分为...
C#
基础教程-
c#
实例教程,适合初学者
C#
基础教程-
c#
实例教程,适合初学者。 第一章
C#
语言基础 本章介绍
C#
语言的基础知识,希望具有C语言的读者能够基本掌握
C#
语言,并以此为基础,能够进一步学习用
C#
语言编写window应用程序和Web应用程序。当然仅靠一章的内容就完全掌握
C#
语言是不可能的,如需进一步学习
C#
语言,还需要认真阅读有关
C#
语言的专著。 1.1
C#
语言特点 Microsoft.NET(以下简称.NET)框...
C#
110,538
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章