我将图像缩放到适当的预定义大小时遇到了一些问题.我想知道 - 因为它纯粹是数学,如果有某种常见的逻辑算法适用于每种语言(PHP,ActionScript,Javascript等),可以按比例缩放图像.
我现在正在使用它:
var maxHeight = 300;
var maxWidth = 300;
var ratio:Number = height / width;
if (height > maxHeight) {
height = maxHeight;
width = Math.round(height / ratio);
}
else if(width > maxWidth) {
width = maxWidth;
height = Math.round(width * ratio);
}
Run Code Online (Sandbox Code Playgroud)
但它不能正常工作.图像按比例缩放,确定,但尺寸未设置为300(宽度或高度).这有点意义,但我想知道是否有一种傻瓜式,简单的方法来按比例缩放图像.
我想知道,一旦我将图像加载到窗体中,有没有办法允许用户拖动该图像的角落并重新调整大小?
目前,我知道PictureBox.Scale方法(但不推荐使用).我也知道PictureBox.Image.Size.这是否意味着每次重新调整大小时我都需要使用PictureBox.Image.Size?另外,我如何允许他们抓取图像以重新调整大小?我想我正在考虑绘画以及它如何允许用户选择图像,然后通过拖动角来重新调整大小......
我不是在寻找一个完整的解决方案 - 只是在正确方向上的一些指针(伪代码或一般描述来帮助我的思维过程会很好).我不太确定如何解决这个问题.
到目前为止,这是我的代码:
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Title = "Load Image";
if (ofd.ShowDialog() == DialogResult.OK)
{
PictureBox pictureBox = new PictureBox();
pictureBox.Image = new Bitmap(ofd.FileName);
pictureBox.SizeMode = PictureBoxSizeMode.StretchImage;
pictureBox.Size = pictureBox.Image.Size;
panelArea.Controls.Add(pictureBox);
}
}
Run Code Online (Sandbox Code Playgroud)