我试图编写一个简单的幻灯片程序。 我有一个名为SlideShowText的类。 我希望它可以通过鼠标扩展,就像在Visual Studio中缩放控件一样。 我希望它有点缀边框。 有帮助吗? (我没有尝试任何东西,因为我是这样的菜鸟)
答案 0 :(得分:3)
这是Resizer控件:
public partial class Resizer : Control
{
public Resizer()
{
InitializeComponent();
Size = new System.Drawing.Size(12, 12);
}
public Control control { get; set; }
Point mDown = Point.Empty;
public Resizer(Control ctl)
{
InitializeComponent();
control = ctl;
Size = new System.Drawing.Size(12, 12);
}
protected override void OnLayout(LayoutEventArgs levent)
{
base.OnLayout(levent);
if (control != null)
{
BackColor = Color.DarkOrange;
Location = new Point(control.Width - Size.Width,
control.Height - Size.Height);
Parent = control;
BringToFront();
}
}
protected override void OnMouseDown(MouseEventArgs e)
{
mDown = e.Location;
base.OnMouseDown(e);
}
protected override void OnMouseUp(MouseEventArgs e)
{
Hide();
base.OnMouseUp(e);
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.Button.HasFlag(MouseButtons.Left))
{
Left += -(mDown.X - e.X);
Top += -(mDown.Y - e.Y);
control.Size = new Size(Right, Bottom);
}
base.OnMouseMove(e);
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
将其添加到项目后,您可以使用它,如下所示:
Resizer rz = null;
private void pictureBox1_DoubleClick(object sender, EventArgs e)
{
if (rz == null) rz = new Resizer(pictureBox1); else rz.Show();
}
结果:
答案 1 :(得分:3)
您可以使用鼠标控制任何大小的控件,覆盖其CreateParams
属性。
例如
class SizeableRichTextBox : RichTextBox
{
protected override CreateParams CreateParams
{
get
{
const int WS_SIZEBOX = 0x40000;
var cp = base.CreateParams;
cp.Style |= WS_SIZEBOX;
return cp;
}
}
}
class SizeablePictureBox : PictureBox
{
protected override CreateParams CreateParams
{
get
{
const int WS_SIZEBOX = 0x40000;
var cp = base.CreateParams;
cp.Style |= WS_SIZEBOX;
return cp;
}
}
}
现在它们有一个粗边框,可以用鼠标调整大小。
如果设置SizeablePictureBox
参数,ImageLayout.Zoom
中的图像比例会自动更改。
var pictureBox = new SizeablePictureBox { Parent = this, Width = 500, Height = 500 };
pictureBox.BackgroundImageLayout = ImageLayout.Zoom;
pictureBox.BackgroundImage = Image.FromFile("pic.jpg");
要更改TextBox
中的文字比例,您必须手动计算宽高比并更改字体大小。或者您可以尝试更改ZoomFactor
属性的值。