.net PictureBoxSizeMode.Zoom-什么';缩放因子是多少?
我有一个PictureBox(其SizeMode属性设置为Zoom)包含一个图像,两者的大小可能不同 由于用户必须直接与图像交互,因此我需要能够将PictureBox单击坐标转换为图像坐标 到目前为止,我所做的是比较PictureBox的纵横比和图像的纵横比。例如,如果PictureBox相对于图像而言是“更宽的屏幕”(请参见屏幕截图),这意味着PictureBox会将图像拉伸到自己的高度并水平居中,在图像的左右两侧显示其背景色(在本例中为红色)。然后我假设图像的显示高度与PictureBox.height相同,并从那里开始工作 不过有个问题。正如您在屏幕截图(绿色注释)中所看到的,白色图像被拉伸以适合(缩放)在红色图片框中,在底部留下一个小的空白 但并非所有PictureBox.Size/Image.Size组合都会出现这种情况。这让我相信一定有更好的方法来做到这一点.net PictureBoxSizeMode.Zoom-什么';缩放因子是多少?,.net,user-interface,image,zooming,picturebox,.net,User Interface,Image,Zooming,Picturebox,我有一个PictureBox(其SizeMode属性设置为Zoom)包含一个图像,两者的大小可能不同 由于用户必须直接与图像交互,因此我需要能够将PictureBox单击坐标转换为图像坐标 到目前为止,我所做的是比较PictureBox的纵横比和图像的纵横比。例如,如果PictureBox相对于图像而言是“更宽的屏幕”(请参见屏幕截图),这意味着PictureBox会将图像拉伸到自己的高度并水平居中,在图像的左右两侧显示其背景色(在本例中为红色)。然后我假设图像的显示高度与PictureBox.
当然,我会的。我只需要修改代码来删除上下文依赖关系 但是底部的边距不是来自我的代码。它来自PictureBox本身。帮我个忙,试试下面的方法: 将PictureBox(PictureBox1)添加到窗体,将其停靠到窗体的所有四个侧面。代码应如下所示:
Public Class Form1
Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
PictureBox1.SizeMode = PictureBoxSizeMode.Zoom
PictureBox1.BackColor = Color.Red
PictureBox1.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
Dim g As Graphics = Graphics.FromImage(PictureBox1.Image)
g.FillRectangle(Brushes.White, 0, 0, PictureBox1.Image.Width, PictureBox1.Image.Height)
End Sub
End Class
运行它并调整窗体大小,以便拉伸(缩放)图像以填充PictureBox的高度,在白色正方形的左侧和右侧留下红色条。现在垂直调整窗体大小,尽可能慢。你应该不时在底部看到一个红色的边距
同样的情况也发生在宽度和水平调整上,右边显示一个边距
正是因为这个小小的缺陷,我知道缩放因子无法按照我的方式计算;结果只是一个近似值。如果在尝试了这个之后,您仍然认为代码是相关的,那么我很乐意发布它
感谢您花时间阅读和回复。我认为没有办法获得缩放因子。我猜你的数学可能有错误,因为底部的空白(可能你有一次性错误或类似的性质)
您可以发布一个完整的示例,显示您正在执行的计算吗?屏幕截图的链接以404结尾