我在picturebox1建立坐标轴,并画了一幅4个同心圆图,现在我想用button实现对图形的刷新、平移、变大、变小功能,但是不知道怎么入手,望各位高手给予帮助,在此谢过各位啦!
解决方案 »
- 怎么通过串口读取硬件上的值。
- c#如何控制随机数出现的概率
- 使用SendMessage传送字符串
- 如何将 文件D:\temp\001\1.xml 拷贝到 e:\myData\001\1.xml (需要同步创建e:\myData\001)
- 发部一个C#写的虚拟机项目(顺便散分)
- 谁可以推荐C#比较经典的教材?最好有电子版下载的。
- 怎么将Byte b[] 连接到 Byte a[] 后?就像String::Concat 一样?
- 关于C#数据结果输出到word的问题
- 很简单:关于DataReader的问题
- 除了VS7.0,还有可视化的C#的编辑环境嘛?
- 请问C# 中有没有类似VB中的with语句
- C#中能直接访问图像在内存中的首地址吗?
平移 : 用GDI+的TransportTranlte.
变大、变小 : 用GDI+的Scale.
放大,缩小可以用Graphics的ScaleTransform实现,它放大是相当于用放大镜
可以参考下:
http://topic.csdn.net/t/20061212/17/5225485.htmlhttp://www.cnblogs.com/XieKe-cs01/archive/2008/02/26/346771.html
public partial class Form1 : Form
{
Graphics g;
public Form1()
{
InitializeComponent();
g = panel1.CreateGraphics();
} /// <summary>
/// 移动
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
g.TranslateTransform(50, 0);
panel1.Invalidate();
} /// <summary>
/// 刷新画圆
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_Paint(object sender, PaintEventArgs e)
{
g.DrawEllipse(new Pen(Brushes.Blue), new Rectangle(new Point(10, 10), new Size(40, 40))); g.DrawEllipse(new Pen(Brushes.Blue), new Rectangle(new Point(10, 110), new Size(40, 40))); g.DrawEllipse(new Pen(Brushes.Blue), new Rectangle(new Point(160, 10), new Size(40, 40))); g.DrawEllipse(new Pen(Brushes.Blue), new Rectangle(new Point(160, 110), new Size(40, 40)));
} /// <summary>
/// 变大
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button3_Click(object sender, EventArgs e)
{
g.ScaleTransform(2, 2);
panel1.Invalidate();
} /// <summary>
/// 变小
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button4_Click(object sender, EventArgs e)
{
g.ScaleTransform((float)0.5, (float)0.5);
panel1.Invalidate();
}
}
下载这个看看吧!