橡皮筋

原创 2006年06月18日 09:00:00

橡皮筋

参见:GDI+编程10个基本技巧”

using System;

using System.Drawing;

using System.Collections;

using System.ComponentModel;

using System.Windows.Forms;


using System.Runtime.InteropServices;


namespace GDIPlus

{

/// <summary>

/// Form5 µÄժҪ˵Ã÷¡£

/// </summary>

public class Form5 : System.Windows.Forms.Form

{

/// <summary>

/// ±ØÐèµÄÉè¼ÆÆ÷±äÁ¿¡£

/// </summary>

private System.ComponentModel.Container components = null;


public Form5()

{

//

// Windows ´°ÌåÉè¼ÆÆ÷Ö§³ÖËù±ØÐèµÄ

//

InitializeComponent();


//

// TODO: ÔÚ InitializeComponent µ÷ÓúóÌí¼ÓÈκι¹Ô캯Êý´úÂë

//

}


/// <summary>

/// ÇåÀíËùÓÐÕýÔÚʹÓõÄ×ÊÔ´¡£

/// </summary>

protected override void Dispose( bool disposing )

{

if( disposing )

{

if(components != null)

{

components.Dispose();

}

}

base.Dispose( disposing );

}


#region Windows ´°ÌåÉè¼ÆÆ÷Éú³ÉµÄ´úÂë

/// <summary>

/// Éè¼ÆÆ÷Ö§³ÖËùÐèµÄ·½·¨ - ²»ÒªÊ¹ÓôúÂë±à¼­Æ÷ÐÞ¸Ä

/// ´Ë·½·¨µÄÄÚÈÝ¡£

/// </summary>

private void InitializeComponent()

{

//

// Form5

//

this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);

this.ClientSize = new System.Drawing.Size(292, 266);

this.Name = "Form5";

this.Text = "Form5";

this.Load += new System.EventHandler(this.Form5_Load);


}

#endregion


private void Form5_Load(object sender, System.EventArgs e)

{

}


[DllImport("gdi32.dll")]

private static extern bool SetROP2(IntPtr hdc, int nDrawMode);


[DllImport("gdi32.dll")]

private static extern bool Rectangle(IntPtr hdc, int x1, int y1, int x2, int y2);


private int m_StartX, m_StartY;

private int m_EndX, m_EndY;

private int m_Step = 0;


protected override void OnMouseDown(MouseEventArgs e)

{

Graphics g = this.CreateGraphics();

IntPtr hdc = g.GetHdc();

m_Step += 1;

SetROP2(hdc, 10);


if(m_Step == 1)

{

this.m_StartX = e.X;

this.m_StartY = e.Y;

this.m_EndX = e.X;

this.m_EndY = e.Y;

}

else if(this.m_Step == 2)

{

Rectangle(hdc, this.m_StartX, this.m_StartY, e.X, e.Y);

Rectangle(hdc, this.m_StartX, this.m_StartY, e.X, e.Y);


this.m_Step = 0;

}


g.ReleaseHdc(hdc);


//base.OnMouseDown (e);

}


protected override void OnMouseMove(MouseEventArgs e)

{

Graphics g = this.CreateGraphics();

int prex, prey;


if(this.m_Step == 1)

{

IntPtr hdc = g.GetHdc();

prex = this.m_EndX;

prey = this.m_EndY;

SetROP2(hdc, 10);

Rectangle(hdc, this.m_StartX, this.m_StartY, prex, prey);

Rectangle(hdc, this.m_StartX, this.m_StartY, e.X, e.Y);

this.m_EndX = e.X;

this.m_EndY = e.Y;

g.ReleaseHdc(hdc);

}


//base.OnMouseMove (e);

}


protected override void OnPaint(PaintEventArgs e)

{

Graphics g = e.Graphics;

g.FillRectangle(Brushes.White, this.ClientRectangle);


//base.OnPaint (e);

}


}

}

参见:GDI+编程10个基本技巧”







相关文章推荐

橡皮筋效果

  • 2015年01月25日 21:58
  • 53KB
  • 下载

MFC橡皮筋矩形框技术

在网上看过很多用在MFC对话框的界面上用鼠标画矩形框的例子,感觉有点乱,同时又达到我想要的效果,经过不断的尝试以及改进,才终于达到我想要的效果。 这部分程序主要实现在对话框界面上的picture控件内...
  • komista
  • komista
  • 2017年06月02日 13:38
  • 158

CRectTracker(橡皮筋类)的应用

  • 2011年06月22日 19:46
  • 3.48MB
  • 下载

MFC做的橡皮筋程序

  • 2011年09月05日 21:24
  • 13.73MB
  • 下载

OpenGL 橡皮筋技术

后天图形学考试,整理了下实验课上的OpenGL关于橡皮筋实验的代码。简单实现了如下功能:1.右键菜单功能响应2.右键选择画折线或矩形,可保存(书上例子演变)3.可选取画线或画矩形的颜色,线宽,像素大小...
  • ldl8818
  • ldl8818
  • 2011年04月23日 23:50
  • 678

mfc 橡皮筋技术 (简化版)

  • 2010年04月19日 20:36
  • 1.84MB
  • 下载

扫描线填充算法实现(橡皮筋)

  • 2010年11月22日 22:36
  • 13KB
  • 下载

CRectTracker(橡皮筋)

CRectTracker(俗称“橡皮筋”类)是一个非常有意思的类。你在Windows中,在桌面上用鼠标拖拽,便可以看到一个虚线的矩形框,它便是橡皮筋.它可以用做显示边界,你也可以扽它的八个角用来放大缩...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:橡皮筋
举报原因:
原因补充:

(最多只允许输入30个字)