保持图像的长宽比?

发布于 2024-08-08 01:09:51 字数 196 浏览 3 评论 0原文

我正在使用 pictureBox 来显示从服务器接收到的图像,但我的问题是紧凑框架中的图片框只有三种大小模式

StretchImage、Normal、CenterImage

我得到的图片通常尺寸较大,所以我必须使用 StrecthImage 模式。但随后纵横比保持不变,因此显示的图像会变形。

那么他们无论如何都能摆脱这个问题吗?

I am using pictureBox to show images which are received from server but my problem is that picture box in compact framework has only three Size Modes

StretchImage, Normal, CenterImage

the pictures i am getting are generally bigger in size so i have to use StrecthImage mode. But then the aspect ratio is maintained so the images shown become distorted.

So is their anyway to come out of this problem ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷迭香的记忆 2024-08-15 01:09:51

最后我找到了我的问题的答案,在这里-----

 float actualHeight = myImg.Height;
 float actualWidth = myImg.Width;
 float imgRatio = actualWidth / actualHeight;
 float maxRatio = (float)this.Width / this.Height;

                if(imgRatio!=maxRatio)
                {
                    if (imgRatio < maxRatio)
                    {
                        imgRatio = this.Height / actualHeight;
                        actualWidth = imgRatio * actualWidth;
                        actualHeight = this.Height;
                    }
                    else
                    {
                        imgRatio = this.Width / actualWidth;
                        actualHeight = imgRatio * actualHeight;
                        actualWidth = this.Width;
                    }
                }
 pictureBox.Size=new Size((int)actualWidth,(int)actualHeight);
 pictureBox.Location = new Point((int)((this.Width - actualWidth) / 2), (int)((this.Height - actualHeight) / 2));

但在执行此操作之前,请将图片框大小模式保持为stretchImage

finally i found answer for my question which is here-----

 float actualHeight = myImg.Height;
 float actualWidth = myImg.Width;
 float imgRatio = actualWidth / actualHeight;
 float maxRatio = (float)this.Width / this.Height;

                if(imgRatio!=maxRatio)
                {
                    if (imgRatio < maxRatio)
                    {
                        imgRatio = this.Height / actualHeight;
                        actualWidth = imgRatio * actualWidth;
                        actualHeight = this.Height;
                    }
                    else
                    {
                        imgRatio = this.Width / actualWidth;
                        actualHeight = imgRatio * actualHeight;
                        actualWidth = this.Width;
                    }
                }
 pictureBox.Size=new Size((int)actualWidth,(int)actualHeight);
 pictureBox.Location = new Point((int)((this.Width - actualWidth) / 2), (int)((this.Height - actualHeight) / 2));

but before doing this keep the picture box size mode as stretchImage

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文