说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何旋转控件

编辑:说三道四文库 发布时间:2018-04-20 05:40
HTML文档下载 WORD文档下载 PDF文档下载
比如TextBox 我想以45度这样倾斜着放在winform上,请问该如何编写?
显示一个字符串很简单,但是要把控件做斜好像还真的不是很容易.
放点水吧,

下面是我试着玩的,可以斜画String, 想=怎么改就怎么改吧,

using System;
using System.Drawing;
using System.Drawing .Drawing2D;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication6
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Button button1;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
// 
// pictureBox1
// 
this.pictureBox1.Image = ((System.Drawing.Bitmap)(resources.GetObject("pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(40, 24);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(376, 216);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
// 
// button1
// 
this.button1.Location = new System.Drawing.Point(296, 192);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(144, 48);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
// 
// Form1
// 
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(464, 266);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
  this.button1,
  this.pictureBox1});
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main() 
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
Graphics g=pictureBox1.CreateGraphics();
g.Clear(Color.Linen);g.RotateTransform(-35);
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
Pen p=new Pen (Brushes.Blue ,15);
Font f=new Font ("宋体",36);
g.DrawLine(p ,1,1,177,177);
g.DrawString("Help Me Out OF HERE!",f,Brushes.Red,new Point (-45,145));

g.Dispose();
}

private void Form1_Load(object sender, System.EventArgs e)
{

}
}
}
Graphics g=pictureBox1.CreateGraphics();
g.Clear(Color.Linen);g.RotateTransform(-35);
g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.HighQuality;
Pen p=new Pen (Brushes.Blue ,15);
Font f=new Font ("宋体",36);
g.DrawLine(p ,1,1,177,177);
g.DrawString("Help Me Out OF HERE!",f,Brushes.Red,new Point (-45,145));

g.Dispose();
重写 TextBox 在OnPaint中你想怎么画就怎么画.
我建议最好是做了写字符的控件,不用那个TEXTBOX,这样控制起来比较方便简单
谢谢各位,我的目的还是对控件进行旋转,
现在碰到的难点就是,通过对控件的Region进行旋转,可是外表不会跟着转
呵呵,这样啊,再研究研究.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘