2 using System.Windows;
\r
3 using System.Windows.Controls;
\r
4 using System.Windows.Documents;
\r
5 using System.Windows.Input;
\r
6 using System.Windows.Media;
\r
7 using System.Windows.Media.Animation;
\r
8 using System.Windows.Media.Imaging;
\r
9 using System.Windows.Shapes;
\r
16 public class Canvas : Drawable
\r
18 public static System.Windows.Controls.Image default_instance;
\r
19 public static System.Windows.Controls.UserControl default_panel;
\r
20 public static WriteableBitmap default_buffer;
\r
21 System.Windows.Controls.Image instance;
\r
22 System.Windows.Controls.UserControl panel;
\r
23 WriteableBitmap buffer;
\r
25 public Canvas(int wid, int hei)
\r
27 panel = default_panel;
\r
28 instance = default_instance;
\r
29 instance.Width = wid;
\r
30 instance.Height = hei;
\r
31 buffer = new WriteableBitmap((int)instance.Width, (int)instance.Height);
\r
32 instance.Source = buffer;
\r
33 instance.MouseMove += Mouse.Canvas_MousePos;
\r
34 instance.MouseLeftButtonDown += Mouse.Canvas_LDown;
\r
35 instance.MouseLeftButtonUp += Mouse.Canvas_LUp;
\r
36 instance.MouseWheel += Mouse.Canvas_MouseWheel;
\r
37 Mouse._prime = instance;
\r
38 Main.drawable = this;
\r
39 default_buffer = buffer;
\r
41 public Canvas(int wid, int hei, System.Windows.Controls.Image target, System.Windows.Controls.UserControl system)
\r
45 instance.Width = wid;
\r
46 instance.Height = hei;
\r
47 buffer = new WriteableBitmap((int)instance.Width, (int)instance.Height);
\r
49 instance.Source = buffer;
\r
50 instance.MouseMove += Mouse.Canvas_MousePos;
\r
51 instance.MouseLeftButtonDown += Mouse.Canvas_LDown;
\r
52 instance.MouseLeftButtonUp += Mouse.Canvas_LUp;
\r
53 instance.MouseWheel += Mouse.Canvas_MouseWheel;
\r
54 Mouse._prime = instance;
\r
55 Main.drawable = this;
\r
57 public Point getCenter()
\r
59 return new Point(instance.Width/2.0, instance.Height/2.0, 0);
\r
64 buffer.Clear(Color.black);
\r
66 public void clear(Color col)
\r
71 public void pix(int x, int y, Color col)
\r
73 buffer.SetPixel(x, y, col);
\r
77 public void line(Line drawee, Color col)
\r
79 buffer.DrawLine((int)drawee.begin.x, (int)drawee.begin.y, (int)drawee.end.x, (int)drawee.end.y, col);
\r
81 public void rect(Rectangle drawee, Color col)
\r
83 buffer.DrawRectangle((int)drawee.v1.x, (int)drawee.v1.y, (int)drawee.v2.x, (int)drawee.v2.y, col);
\r
85 public void ellipse(Ellipse drawee, Color col)
\r
87 buffer.DrawEllipse((int)(drawee.datum.x - drawee.xdiameter / 2), (int)(drawee.datum.y - drawee.ydiameter / 2), (int)(drawee.datum.x + drawee.xdiameter / 2), (int)(drawee.datum.y + drawee.ydiameter / 2), col);
\r
89 public void polygon(Polygon drawee, Color col)
\r
91 int[] ps = new int[drawee.vertices.Count];
\r
93 foreach (Point p in drawee.vertices)
\r
95 ps[i] = (int)p.x; i++;
\r
96 ps[i] = (int)p.y; i++;
\r
98 buffer.DrawPolyline(ps, col);
\r
100 public void image(Image drawee)
\r
102 buffer.Blit(drawee.datum, drawee.buffer, drawee.self_rect, Colors.White, WriteableBitmapExtensions.BlendMode.None);
\r
108 buffer.Invalidate();
\r