gpt4 book ai didi

c# - Windows 窗体 C# : Resize Label image on runtime when resizing the label

转载 作者:行者123 更新时间:2023-11-30 14:28:33 25 4
gpt4 key购买 nike

这是我的问题:

我以编程方式向表单添加标签,包括一些属性以在运行时通过使用鼠标右键单击事件单击并拖动它们来调整它们的大小。

我的情况是,我通过 OpenDialog 以编程方式添加了一个包含来自给定文件的图像的标签,并且我想在拉伸(stretch)标签时调整该图像的大小以填充标签大小。不幸的是,我无法通过访问标签中的 image.Size 属性在运行时设置大小,因为它是只读的...有什么想法吗?

这是受影响的代码段:

Point _oldPosition;
public static Label _ctrlActiveControl;

if (e.Button == MouseButtons.Right)
{
_ctrlActiveControl.Cursor = Cursors.SizeNWSE;

//Code to resize the control based on the mouse position
Point newPosition = new Point(e.X, e.Y);
_ctrlActiveControl.Width += (newPosition.X - _oldPosition.X);
_ctrlActiveControl.Height += (newPosition.Y - _oldPosition.Y);

//Some security to make sure I don't shrink the control too much
if (_ctrlActiveControl.Width < 10) _ctrlActiveControl.Width = 10;
if (_ctrlActiveControl.Height < 10) _ctrlActiveControl.Height = 10;

//Here I check if the label contains an image and, if so, I should resize
//The image to "Autofill" the label
if (_ctrlActiveControl.Image != null)
{
Image image = _ctrlActiveControl.Image;
image.Size = new Size(_ctrlActiveControl.Width, _ctrlActiveControl.Height);
}

_oldPosition = newPosition;
}

我想知道是否有任何方法可以做到这一点,或者我是否应该使用其他控件类型(我知道我可以使用其他控件,但我想知道在添加之前是否有任何可用的解决方法更多变量)。

最佳答案

您可以将其转换为Bitmap 并使用Graphics 重新绘制。然后用新创建的图像替换旧图像。我不知道这在性能方面是否可行,但我想值得一试。

Bitmap newImage = new Bitmap(_ctrlActiveControl.Width, _ctrlActiveControl.Height);
using (Bitmap bm = new Bitmap(_ctrlActiveControl.Image))
{
using (Graphics g = Graphics.FromImage(newImage))
{
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
Point[] corners = { new Point(0, 0), new Point(newImage.Width, 0), new Point(0, newImage.Height) };
g.DrawImage(bm, corners);
}
}
_ctrlActiveControl.Image = newImage;

您需要使用 System.DrawingSystem.Drawing.Drawing2D

关于c# - Windows 窗体 C# : Resize Label image on runtime when resizing the label,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29367770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com