winform图片容器缩放问题

X-i-n 2019-08-26 11:22:58
最近在做一个图片展示的软件,容器用的是PictureBox(如果有其他更好的容器还请指点)。

因为图片高度在1000px左右,宽度不固定,但是一定会超出屏幕很多。现在想将PictureBox固定高度800px,将图片缩放到高度也是800px,宽度按相同比例进行缩放(垂直方向100%适合容器,水平方向使用PictureBox进度条调整显示区域)。

请问有什么好一点的处理方法吗?(不太方便使用Image类重新定义宽度和高度的方式生成符合要求的图片)。
...全文
347 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2019-09-03
  • 打赏
  • 举报
回复
最后还是用代码来进行绽放,没有别的好办法。
X-i-n 2019-08-27
  • 打赏
  • 举报
回复
我不需要把图片全装进来,只需要高度和容器一致即可。宽度可以超出屏幕。
X-i-n 2019-08-27
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
算出长宽比,大于picturebox长宽比的,按照长缩放,否则按照宽度缩放
多谢回复。 我这个需求有点特殊。一般做法是创建一个新图片,根据原图片的原始宽高 + 容器高度 进行等比例缩放,然后将新图片设为PictureBox的图片。但我当前场景有点特殊,希望借助容器自身的属性设置来达到缩放目的(比如winform里PictureBox里可以设置StretchImage,使图片填满容器,我的需求和这个不一样的地方是,我只希望高度填满容器,宽度按同比例缩放,不填充容器)
threenewbee 2019-08-27
  • 打赏
  • 举报
回复
算出长宽比,大于picturebox长宽比的,按照长缩放,否则按照宽度缩放
  • 打赏
  • 举报
回复
winform做缩放效果不太理想,可以考虑WPF。
assky124 2019-08-27
  • 打赏
  • 举报
回复
Panel 里套个PictureBox控件,Panel自动滚动条。根据图片设置Picture的宽度 var img = your image var height = 800; var width = img.width/img.height * height; pb.Width = width; pb.Height = height;
【源码免费下载链接】:https://renmaiwang.cn/s/66uj2 在C# WinForm开发过程中,我们通常需要设计的用户界面应具备自动适应窗体尺寸的能力。为了实现这一功能,我们可以参考博客中的相关内容并结合自身需求进行深入理解。Windows Forms应用程序的设计中包含一个重要的概念——自动缩放(AutoScale),它通过指定AutoScaleMode属性来控制控件在窗体大小变化时的行为。该属性允许我们定义当窗体尺寸发生变化时,系统如何调整控件的大小以保持视觉上的比例关系。 具体来说,AutoScaleMode支持以下几种模式:1. **无缩放(None)**:在这种模式下,控件将保持其原始尺寸不变;2. **基于字体大小(Font)**:当界面元素依赖于字体大小时,可以使用此模式进行调整;3. **基于DPI设置(Dpi)**:适用于高分辨率显示环境的用户界面设计;4. **跟随父容器缩放(Parent)**:控件会按照其父容器缩放模式进行调整;5. **继承自父控件(Inherited)**:控件将遵循其父控件设定的缩放策略。 要实现WinForm控件随窗体大小自动缩放,首先应在窗体类中设定AutoScaleMode属性。例如: ```csharp this.AutoScale = System.Windows.Forms.AutoScale.Dpi; ``` 此外,对于窗体内各个控件,也可以分别设置其AutoSizeMode属性以确定具体的缩放策略。 为了在窗体尺寸变化时动态调整控件大小,可以自定义一个OnResize事件实现: ```csharp protected override void OnResizeEventArgs(e) { base.OnresizeEvent(e); // 根据需要重新计算和设置控件的位置及大小 forea

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧