Rubber band
See: "10 basic skills of GDI programming"
Using system;
Using system.drawing;
Using system.collections;
Using system.componentmodel;
Using system.windows.forms;
Using system.Runtime.InteropServices;
Namespace gdiplus
{
///
/// Form5 μäõªõªªªμã ÷ ÷ ¡¡ £
/// summary>
Public Class Form5: System.Windows.Forms.form
{
///
// ± øðè μμè1/1/1/1æ ÷ ± Äá¿ ¡ £
/// summary>
Private system.componentmodel.Container Components = NULL;
Public Form5 ()
{
//
// windows' ° åèè1/4ææ ÷ ö§3öëù ± øðè μä
//
InitializationComponent ();
//
// Todo: ôú initializecomponent μ μ óãóíí¼/4 ó躹¹¹¹¹¹¹¹o ¯êý'âëë
//
}
///
/// çåàíëùóóõõôô¹¹¹¹ãμäõõ''''''''''¡ £
/// summary>
Protected Override Void Dispose (Bool Disposing)
{
IF (Disposing)
{
IF (Components! = NULL)
{
Components.dispose ();
}
}
Base.dispose (Disposing);
}
#region windows' ° åéè 4ææ ÷ éú3éμä'úâë
///
/// éè1/4ææ ÷ ö§3öùùðèμä · 1/2 · ¨ - 2 »ªªª¹¹¹''ë ± (à4æ ÷ þþ þä
/// 'ë · 1/2 · ¨μäúèý¡¡ £
/// summary>
Private vidinitiRizeComponent ()
{
//
// form5
//
THIS.AUTOSCALEBASESIZE = New System.drawing.size (6, 14);
THIS.CLIENTSIZE = New System.drawing.size (292, 266);
THIS.NAME = "Form5";
THIS.TEXT = "FORM5";
THISLOAD = New System.EventHandler (this.form5_load);
}
#ndregion
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);
}
}
}
See: "10 basic skills of GDI programming"