
一般来说一个点被精确的认定为1/72英寸,在WPF中,采用的设备无关单位即1/96英寸
所以程序中获取的大小 比真实的大小要大一点, 获取到大小后进行相应的转换即可获得原来的尺寸 如: height=height72/96
用StretchBlt可以放大或缩小bitmap
The StretchBlt function copies a bitmap from a source rectangle into a destination rectangle, stretching or compressing the bitmap to fit the dimensions of the destination rectangle, if necessary The system stretches or compresses the bitmap according to the stretching mode currently set in the destination device context
BOOL StretchBlt(
HDC hdcDest, // handle to destination DC
int nXOriginDest, // x-coord of destination upper-left corner
int nYOriginDest, // y-coord of destination upper-left corner
int nWidthDest, // width of destination rectangle
int nHeightDest, // height of destination rectangle
HDC hdcSrc, // handle to source DC
int nXOriginSrc, // x-coord of source upper-left corner
int nYOriginSrc, // y-coord of source upper-left corner
int nWidthSrc, // width of source rectangle
int nHeightSrc, // height of source rectangle
DWORD dwRop // raster operation code
);
对于对象:ObjPtr(对象名) 可以获得这个对象储存在内存中数据的地址
但是这个地址对于框来说一定不等于其内容的地址 因为是这个对象的一个属性
一般框是DDB(Device Dependent Bitmap,相对于DIB,设备无关位图)的位图,数据被系统封装,因此你只能 *** 作其DC(Device Context 设备上下文)或 *** 作被选入DC的位图:
使用系统提供的语句完成图像的处理(例如位图复制等),不能直接去修改内存实现位图数据的修改。
例如,
可以用GetBitmapBits,SetBitmapBits等函数来读取或修改位图的数据
可以用BitBlt函数来复制一个DC内容到另一个DC上
DC与位图区别在于DC是一个绘图的环境,DC更高层一点,而位图则是纯粹的数据
如果想直接通过修改内存(例如创建了一个数组,储存图像),请先建立一个DIB位图,然后SelectObject选入DC。
创建DIB可以用CreateDIBSection函数,这个函数可以从指定内存创建DIB位图,或者分配一个内存并返回其地址
(得到数据储存的地址以后就可以在vb中修改SafeArray结构来很容易地通过访问数组来访问该块内存)
注意:picturebox的DC是picturehdc,而不能用GetDC(picturehwnd),因为在AutoRedraw=True的时候这样会出问题。
用bitmap这个对象读取,然后可以取得的宽度和高度,pictureBox只是用作显示的一个容器而已,不要直接用pictureBox读取,用pictureBox加载读取了的bitmap对象,并根据bitmap对象的大小,调整pictureBox的大小,以及窗口的大小。当然了,这个大小也不能无限制大,因为受到屏幕显示大小的限制。
更多功能你最好查一下bitmap的用法,以及GDI+的一些 *** 作。
以acd看图为例:
在默认状态下,选中后,在状态栏会显示图像的信息,有图像KB大小也有长宽尺寸,
不过这样一个一个查看太慢了,按Alt + O快捷键或者选择工具菜单>选项,打开选项设置窗口,
选择左侧文件列表>缩略图显示,再点击右侧的缩略图信息
在d出的选取缩略图显示信息中展开图像属性:勾图像大小,展开文件属性:勾选大小(KB)
点击添加按钮,添加到当前显示明细中,点击确定,返回选项窗口,点击确定。
看缩略图下面很清楚的显示出了图像大小,也就是长宽像素值,还有KB大小。
以上就是关于C# wpf BitmapImage从本地资源获得未知像素大小的图片,如何将其对象设为指定大小全部的内容,包括:C# wpf BitmapImage从本地资源获得未知像素大小的图片,如何将其对象设为指定大小、Bitmap改变大小、vb 如何获取一个对象的地内存地址比如有一个Picturebox里面的图象,我想获取图象的内存地址和大小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)