Example #1
0
 HatchPen CreateHatchPen(Color color, float width)
 {
     HatchPen pen = new HatchPen();
     // TODO: brush 被谁拥有?会被正确释放么?
     pen.Brush = new HatchBrush(HatchStyle.DarkUpwardDiagonal, // WideDownwardDiagonal,
         // Color.FromArgb(0, 255, 255, 255),
         Color.FromArgb(0, 254, 254, 254),
         Color.FromArgb(255, color)
         );    // back
     pen.Pen = new Pen(pen.Brush,
         width);  // 可修改
     return pen;
 }
Example #2
0
        HatchPen CreateHatchPen(Color color, float width)
        {
            HatchPen pen = new HatchPen();

            // TODO: brush 被谁拥有?会被正确释放么?
            pen.Brush = new HatchBrush(HatchStyle.DarkUpwardDiagonal, // WideDownwardDiagonal,
                                                                      // Color.FromArgb(0, 255, 255, 255),
                                       Color.FromArgb(0, 254, 254, 254),
                                       Color.FromArgb(255, color)
                                       ); // back
            pen.Pen = new Pen(pen.Brush,
                              width);     // 可修改
            return(pen);
        }
Example #3
0
        private void LineLayerForm_Paint(object sender, PaintEventArgs e)
        {
            if (this._transparent == true)
            {
                return;
            }

            if (this._panelState == dp2Circulation.PanelState.HilightPanel)
            {
                if (_targetRect != new Rectangle(0, 0, 0, 0))
                {
                    e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;

                    // 整个背景填充为灰色
                    using (Brush brush = new SolidBrush(Color.LightGray))
                    {
                        e.Graphics.FillRectangle(brush, this.ClientRectangle);
                    }

                    using (HatchPen hatch_pen = CreateHatchPen(Color.Blue, 6))
                    {
                        Rectangle rectTarget = this.RectangleToClient(_targetRect);

                        Rectangle rectTargetBorder = rectTarget;

                        Pen pen = hatch_pen.Pen;
                        rectTargetBorder.Inflate((int)pen.Width / 2, (int)pen.Width / 2);

                        using (Brush brush = new SolidBrush(this.BackColor))
                        {
                            e.Graphics.FillRectangle(brush, rectTarget);
                        }
                    }

                    // 将 source 位置的线条用背景色擦除
                    using (Brush brush = new SolidBrush(this.BackColor))
                    {
                        Rectangle rectSource = this.RectangleToClient(_sourceRect);
                        e.Graphics.FillRectangle(brush, rectSource);
                    }

                    using (HatchPen hatch_pen = CreateHatchPen(Color.Blue, 6))
                    {
                        Rectangle rectSource = this.RectangleToClient(_sourceRect);

                        Rectangle rectBorder = rectSource;

                        Pen pen = hatch_pen.Pen;
                        rectBorder.Inflate((int)pen.Width / 2, (int)pen.Width / 2);
                        e.Graphics.DrawRectangle(pen, rectBorder);
                    }
                }
            }
            else if (this._panelState == dp2Circulation.PanelState.HilightForm)
            {
                // 把 source 区域变成灰色
                using (Brush brush = CreateHatchBrush(Color.DarkGray))    // new SolidBrush(Color.LightGray)
                {
                    e.Graphics.FillRectangle(brush, this.RectangleToClient(_sourceRect));
                }
            }
        }