public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { GraphicsEngine.Abstraction.IFont iFont = null; if (context.Instance is TrueTypeMarkerSymbol) { iFont = ((TrueTypeMarkerSymbol)context.Instance).Font; } if (context.Instance is CustomClass && ((CustomClass)context.Instance).ObjectInstance is TrueTypeMarkerSymbol) { iFont = ((TrueTypeMarkerSymbol)((CustomClass)context.Instance).ObjectInstance).Font; } if (iFont == null) { return(value); } IWindowsFormsEditorService wfes = provider.GetService( typeof(IWindowsFormsEditorService)) as IWindowsFormsEditorService; if (wfes != null) { Form_UITypeEditor_Character dlg = new Form_UITypeEditor_Character(wfes, iFont, (byte)value); wfes.DropDownControl(dlg.panelChars); return(dlg.Charakter); } return(value); }
private void drawString(GraphicsEngine.Abstraction.ICanvas canvas, GraphicsEngine.Abstraction.IFont font, string text, float x, float y) { using (var brush = GraphicsEngine.Current.Engine.CreateSolidBrush(GraphicsEngine.ArgbColor.White)) { canvas.DrawText(text, font, brush, x - 1, y); canvas.DrawText(text, font, brush, x + 1, y); canvas.DrawText(text, font, brush, x, y + 1); canvas.DrawText(text, font, brush, x, y - 1); } using (var brush = GraphicsEngine.Current.Engine.CreateSolidBrush(GraphicsEngine.ArgbColor.Black)) { canvas.DrawText(text, font, brush, x, y); } }
public Form_UITypeEditor_Character(IWindowsFormsEditorService wfes, GraphicsEngine.Abstraction.IFont iFont, byte charakter) { // // Erforderlich für die Windows Form-Designerunterstützung // InitializeComponent(); _wfes = wfes; _c = charakter; if (iFont != null) { int size = 50; panelChars.Width = panelChars.Height = size * 16; for (int y = 0; y < 16; y++) { for (int x = 0; x < 16; x++) { Button btn = new Button(); btn.Name = (y * 16 + x).ToString(); btn.Width = btn.Height = size; btn.Top = y * size; btn.Left = x * size; btn.FlatStyle = FlatStyle.Popup; btn.Paint += (sender, e) => { var p = (Button)sender; using (var bitmap = Current.Engine.CreateBitmap(size, size)) using (var canvas = bitmap.CreateCanvas()) using (var blackBrusn = Current.Engine.CreateSolidBrush(ArgbColor.Black)) using (var yellowBrush = Current.Engine.CreateSolidBrush(ArgbColor.Yellow)) using (var font = Current.Engine.CreateFont(iFont.Name, 12)) { var c = (char)int.Parse(p.Name); if (c == charakter) { canvas.FillRectangle(yellowBrush, new CanvasRectangle(0, 0, size, size)); } var drawTextFormat = Current.Engine.CreateDrawTextFormat(); drawTextFormat.Alignment = StringAlignment.Center; drawTextFormat.LineAlignment = StringAlignment.Center; canvas.DrawText(c.ToString(), font, blackBrusn, new CanvasPoint(16, 16), drawTextFormat); canvas.Flush(); using (var ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Png); using (var bm = System.Drawing.Bitmap.FromStream(ms)) { e.Graphics.DrawImage(bm, 0, 0); } } } }; btn.Click += new EventHandler(btn_Click); panelChars.Controls.Add(btn); } } } }