From 9bd94c1f13bef9abe1c4236e3a202fb13324ca62 Mon Sep 17 00:00:00 2001 From: thefiddler Date: Thu, 1 May 2014 17:03:47 +0200 Subject: [PATCH] [Examples] Improved MouseCursor example --- Source/Examples/Data/Textures/cursor.png | Bin 3357 -> 925 bytes .../OpenTK/GameWindow/MouseCursorSimple.cs | 53 +++++++++++++++++- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/Source/Examples/Data/Textures/cursor.png b/Source/Examples/Data/Textures/cursor.png index d0dc4a48f35d125aacd25d2f087e4537687dbe0d..67706296e05dc2627917eb0c2a81f6d8d993dd48 100644 GIT binary patch literal 925 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+0817ll&Plzi}0Rh0sz`%r} zgpr96E&^f$jRKO449qMbhe1dngN2oai5XQV*ceuJkVByWq#Ftj9XiO)!4Bgw2nq?p z*~sQdNJ=<3I6$Nn6cmJnglcPR?d1`I`zhl8|&AvFDom%bLY0*Rrd7v z%L-P0UG?qEbBz~T+AqE_3R>u8u6Q98GWnBf#mRp!WWuL?;m|$sfL%TG#ji3h4!$Wt z7utY^F(!GtyEF>zTK5mgx#j8N7-DfcIYEKfz{qg(hDQ_Alb=6$^5|LOVa@ZWkLxSE zc%gEnEjTX1<;u;YS9{r)@0qb@9*g8I;Q+yR#;kGzdbn4PSH@)l6Cc-rbR*lcBZFqhKy+^z7gz=0SpJs=K zUcWNy@r3jZ8@8GcZ)LY2~qV=QaR+saoP1 zQIe8al4_M)lnSI6j0_A-bPY^(4GcpJ&8$p~txSxy4UDV|4EUr~AE9W-%}>cptHh$g W2%_Pp;j~vk4Gf;HelF{r5}E*{?MX5K literal 3357 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 lines = new List(); public MouseCursorSimple() : base(800, 600) @@ -26,7 +28,7 @@ namespace Examples.Tutorial using (Bitmap bitmap = new Bitmap("Data/Textures/cursor.png")) { var data = bitmap.LockBits( - new Rectangle(0, 0, bitmap.Width, bitmap.Height), + new Rectangle(2, 21, bitmap.Width, bitmap.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format32bppPArgb); @@ -34,8 +36,49 @@ namespace Examples.Tutorial 0, 0, data.Width, data.Height, data.Scan0); Cursor = MyCursor; } + + Mouse.Move += Mouse_Move; + Mouse.ButtonDown += Mouse_ButtonDown; } + void AddLine(float x, float y) + { + // Scale mouse coordinates from + // (0, 0):(Width, Height) to + // (-1, -1):(+1, +1) + // Note, we must flip the y-coordinate + // since mouse is reported with (0, 0) + // at top-left and our projection uses + // (-1, -1) at bottom left. + x = (x- Width) / (float)Width; + y = (Height - y) / (float)Height; + lines.Add(new Vector2(2 * x + 1, 2 * y - 1)); + } + + #region Mouse_ButtonDown + + void Mouse_ButtonDown(object sender, MouseButtonEventArgs e) + { + if (e.Button == MouseButton.Left) + { + AddLine(e.X, e.Y); + } + } + + #endregion + + #region Mouse_Move + + void Mouse_Move(object sender, MouseMoveEventArgs e) + { + if (Mouse[MouseButton.Left]) + { + AddLine(e.X, i.Y); + } + } + + #endregion + #region Keyboard_KeyDown /// @@ -144,6 +187,14 @@ namespace Examples.Tutorial GL.End(); + GL.Begin(PrimitiveType.LineStrip); + foreach (var p in lines) + { + GL.Color4(Color.White); + GL.Vertex2(p); + } + GL.End(); + this.SwapBuffers(); }