{\r
public static System.Windows.Controls.Image default_buffer_frame;\r
public static System.Windows.Controls.UserControl default_panel;\r
+ public static System.Windows.Controls.Canvas default_api_canvas;\r
public static WriteableBitmap default_buffer;\r
System.Windows.Controls.Image instance;\r
- System.Windows.Controls.UserControl panel; \r
+ System.Windows.Controls.Canvas api_canvas;\r
+ System.Windows.Controls.UserControl panel;\r
WriteableBitmap buffer;\r
+ System.Windows.Shapes.Rectangle back_panel;\r
+ System.Windows.Media.SolidColorBrush back_panel_color;\r
\r
public Canvas(int wid, int hei)\r
{\r
panel = default_panel;\r
+ api_canvas = default_api_canvas;\r
instance = default_buffer_frame;\r
initialize(wid, hei);\r
}\r
- public Canvas(int wid, int hei, System.Windows.Controls.Image target, System.Windows.Controls.UserControl system)\r
+ public Canvas(int wid, int hei, System.Windows.Controls.Image target, System.Windows.Controls.Canvas apicnvs, System.Windows.Controls.UserControl system)\r
{\r
panel = system;\r
+ api_canvas = apicnvs;\r
instance = target;\r
initialize(wid, hei);\r
}\r
{\r
instance.Width = wid;\r
instance.Height = hei;\r
- buffer = new WriteableBitmap((int)instance.Width, (int)instance.Height);\r
instance.Source = buffer;\r
- instance.MouseMove += Mouse.Canvas_MousePos;\r
- instance.MouseLeftButtonDown += Mouse.Canvas_LDown;\r
- instance.MouseLeftButtonUp += Mouse.Canvas_LUp;\r
- instance.MouseWheel += Mouse.Canvas_MouseWheel;\r
- Mouse._prime = instance;\r
+ api_canvas.Width = wid;\r
+ api_canvas.Height = hei;\r
+ buffer = new WriteableBitmap((int)instance.Width, (int)instance.Height);\r
+ api_canvas.MouseMove += Mouse.Canvas_MousePos;\r
+ api_canvas.MouseLeftButtonDown += Mouse.Canvas_LDown;\r
+ api_canvas.MouseLeftButtonUp += Mouse.Canvas_LUp;\r
+ api_canvas.MouseWheel += Mouse.Canvas_MouseWheel;\r
+ Mouse._prime = api_canvas;\r
Main.drawable = this;\r
default_buffer = buffer;\r
+\r
+ back_panel = new System.Windows.Shapes.Rectangle();\r
+ back_panel.Width = wid;\r
+ back_panel.Height = hei;\r
+ back_panel_color = new SolidColorBrush();\r
+ back_panel.Fill = back_panel_color;\r
}\r
public Point getCenter()\r
{\r
}\r
public void clear(Color col)\r
{\r
- buffer.Clear(col);\r
+ api_canvas.Children.Clear();\r
+ back_panel_color.Color = col;\r
+ api_canvas.Children.Add(back_panel);\r
+ //buffer.Clear(col);\r
}\r
\r
public void pix(int x, int y, Color col)\r
\r
public void line(Line drawee, Color col)\r
{\r
- buffer.DrawLine((int)drawee.begin.x, (int)drawee.begin.y, (int)drawee.end.x, (int)drawee.end.y, col);\r
+ //buffer.DrawLine((int)drawee.begin.x, (int)drawee.begin.y, (int)drawee.end.x, (int)drawee.end.y, col);\r
+ var zapi_shape = new System.Windows.Shapes.Line();\r
+ var zapi_fill = new System.Windows.Media.SolidColorBrush();\r
+ zapi_shape.X1 = (int)drawee.begin.x;\r
+ zapi_shape.Y1 = (int)drawee.begin.y;\r
+ zapi_shape.X2 = (int)drawee.end.x;\r
+ zapi_shape.Y2 = (int)drawee.end.y;\r
+ zapi_fill.Color = col;\r
+ zapi_fill.Opacity = 1.0;\r
+ zapi_shape.Stroke = zapi_fill;\r
+ zapi_shape.StrokeThickness = 1;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ //System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.left);\r
+ //System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.top);\r
}\r
public void rect(Rectangle drawee, Color col)\r
{\r
//buffer.DrawRectangle((int)drawee.v1.x, (int)drawee.v1.y, (int)drawee.v2.x, (int)drawee.v2.y, col);\r
- api_rect.Width = drawee.width;\r
- api_rect.Height = drawee.height;\r
- api_fill.Color = col;\r
- api_rect.Fill = api_fill;\r
- api_translation.X = drawee.left;\r
- api_translation.Y = drawee.top;\r
- buffer.Render(api_rect, api_translation);\r
+\r
+ var zapi_shape = new System.Windows.Shapes.Rectangle();\r
+ var zapi_fill = new System.Windows.Media.SolidColorBrush();\r
+ zapi_shape.Width = drawee.width;\r
+ zapi_shape.Height = drawee.height;\r
+ zapi_fill.Color = col;\r
+ zapi_shape.Fill = zapi_fill;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.left);\r
+ System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.top);\r
}\r
public void ellipse(Ellipse drawee, Color col)\r
{\r
- 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
+ //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
+\r
+ var zapi_shape = new System.Windows.Shapes.Ellipse();\r
+ var zapi_fill = new System.Windows.Media.SolidColorBrush();\r
+ zapi_shape.Width = drawee.width;\r
+ zapi_shape.Height = drawee.height;\r
+ zapi_fill.Color = col;\r
+ zapi_shape.Fill = zapi_fill;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.left);\r
+ System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.top);\r
}\r
public void polygon(Polygon drawee, Color col)\r
{\r
+ /*\r
int[] ps = new int[drawee.vertices.Count];\r
- int i=0;\r
+ buffer.DrawPolyline(ps, col);\r
+ */\r
+ var zapi_shape = new System.Windows.Shapes.Polygon();\r
+ var zapi_fill = new System.Windows.Media.SolidColorBrush();\r
+ int i = 0;\r
foreach (Point p in drawee.vertices)\r
{\r
- ps[i] = (int)p.x; i++;\r
- ps[i] = (int)p.y; i++;\r
+ zapi_shape.Points.Add(p);\r
}\r
- buffer.DrawPolyline(ps, col);\r
+ zapi_fill.Color = col;\r
+ zapi_shape.Fill = zapi_fill;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.datum.x);\r
+ System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.datum.y);\r
+ }\r
+ public void letters(Letters drawee, Color col)\r
+ {\r
+ //var zapi_shape = new System.Windows.Documents.Glyphs();\r
+ var zapi_shape = new System.Windows.Controls.TextBlock();\r
+ var zapi_fill = new System.Windows.Media.SolidColorBrush();\r
+ zapi_shape.MaxWidth = width;\r
+ zapi_shape.MaxHeight = height;\r
+ zapi_shape.Text = drawee.str;\r
+ //zapi_shape.FontFamily = ;\r
+ zapi_shape.FontSize = drawee.font.size;\r
+ zapi_shape.FontStyle = drawee.font.style==Font.Style.normal_style ? System.Windows.FontStyles.Normal : System.Windows.FontStyles.Italic;\r
+ zapi_shape.FontWeight = drawee.font.weight>400 ? System.Windows.FontWeights.Bold : System.Windows.FontWeights.Normal;\r
+ zapi_shape.TextAlignment = drawee.align==Letters.HorizontalAlign.TEXT_ALIGN_LEFT ? TextAlignment.Left : TextAlignment.Center;\r
+ zapi_fill.Color = col;\r
+ zapi_shape.Foreground = zapi_fill;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.datum.x);\r
+ System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.datum.y);\r
}\r
public void image(Image drawee)\r
{\r
- buffer.Blit(drawee.datum, drawee.buffer, drawee.self_rect, Colors.White, WriteableBitmapExtensions.BlendMode.None);\r
+ //buffer.Blit(drawee.datum, drawee.buffer, drawee.self_rect, Colors.White, WriteableBitmapExtensions.BlendMode.None);\r
+ var zapi_shape = new System.Windows.Controls.Image();\r
+ zapi_shape.Source = drawee.buffer;\r
+ api_canvas.Children.Add(zapi_shape);\r
+ System.Windows.Controls.Canvas.SetLeft(zapi_shape, drawee.datum.x);\r
+ System.Windows.Controls.Canvas.SetTop(zapi_shape, drawee.datum.y);\r
}\r
\r
\r
buffer.Invalidate();\r
frame++;\r
}\r
+\r
+ public double width { get { return api_canvas.Width; } }\r
+ public double height { get { return api_canvas.Height; } }\r
}\r
\r
\r