예제 #1
0
        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);
        }
예제 #2
0
파일: scalebar.cs 프로젝트: jugstalt/gview5
        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);
                    }
                }
            }
        }