原因分析
DrawImage是设备相关的函数,换言之就是,DrawImage会把屏幕的参数带上,所以,它绘制图像的DPI基本都是96。而我的图片是72DPI的。例如,假定一个 Image 对象的宽度为 216 像素而存储的水平分辨率值为 72 点/英寸。因为 216 除以 72 等于 3,所以 DrawImage 将缩放该图像,使其在 96 点/英寸的分辨率下的宽度为 3 英寸。也就是说,DrawImage 将显示一个宽度为 96x3 = 288 像素的图像。
解决方案
1:ctx.DrawImage(image, 0, 0, image.Width, image.Height) //绘制时加上原图的宽度和高度
2: image.SetResolution(96, 96) //设置SetResolution,使其按96 点/英寸的分辨率显示
把图像等比例扩大或缩小尺寸步骤如下:1、打开ai的软件,执行菜单栏中文件—新建,或者直接使用快捷键Ctrl+N新建一个画布。
2、选择工具箱中的心形工具,将填充设置为红色,描边设置为无
3、然后鼠标点击拖动不放,上下方向键控制角度的多少,我们画出一个的类似太阳的图形,如下图所示。选择我们来讲这个图形缩小或者是放大。
4、选择工具箱中的选择工具,选中这个图形,我们可以在四周看到一个方框,这个方框上每边都有三个锚点。如下图所示。
5、我们将鼠标放到锚点上,我们可以看到一个两个方向的箭头,直接点击向图形移动就是缩小,远离图形就是放大。
这个函数可以缩放,不能旋转。头四个数是画到什么地方,后四个数是画那幅图的哪个部分,也就是可以光画图的一半等等。public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g
AffineTransform at = new AffineTransform()
double angle = Math.PI
at.rotate(angle)
int transX = 100
int transY = 100
at.translate(transX, transY)
Image img = new BufferedImage()
g2.drawImage(img, at, null)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)