English 中文(简体)
提取一条从蓝线Shape继承的新 Cur子
原标题:Draw a new Curved Shape inherited from LineShape

I use Microsoft.VisualBasic.PowerPacks. LineShape component. This component is good, but I want to draw a curve instead of a right line. I stardet to modify the OnPaint:

    protected override void OnPaint(PaintEventArgs pevent)
    {
        //base.OnPaint(pevent);            
        pevent.Graphics.DrawLines(Pens.Green, new Point[] { 
            new Point(X1, Y1), new Point(40, 10), new Point(X2, Y2)});
    }

这一部分是正确的,但并未发现Mouse事件(浮标)。 这是我的整个试验守则:

using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;

namespace WindowsApplication1
{
    public partial class Form1 : Form
    {
        private ShapeContainer shapeContainer1;

        public Form1()
        {
            this.shapeContainer1 = new PowerPacks.ShapeContainer();
            InitializeComponent();

            // add the shapeContainer1
            this.Controls.Add(this.shapeContainer1);

            // add a blue LineShape
            this.shapeContainer1.Shapes.Add(
                new LineShape(60, 10, 90, 70));
            (this.shapeContainer1.Shapes.get_Item(0) as LineShape).BorderColor = Color.Blue;

            // add a red (green in OnPaint) MyCourveShape
            this.shapeContainer1.Shapes.Add(
                new MyCourveShape(10, 10, 50, 50));
            (this.shapeContainer1.Shapes.get_Item(1) as MyCourveShape).BorderColor = Color.Red;
        }
    }

    public class MyCourveShape : Microsoft.VisualBasic.PowerPacks.LineShape
    {
        public MyCourveShape(int x1, int y1, int x2, int y2) 
        { 
            this.X1 = x1;
            this.X2 = x2;
            this.Y1 = y1;
            this.Y2 = y2; 
        }

        protected override void OnPaint(PaintEventArgs pevent)
        {
            //base.OnPaint(pevent);            
            pevent.Graphics.DrawLines(Pens.Green, new Point[] { 
                new Point(X1, Y1), new Point(40, 10), new Point(X2, Y2)});
        }

        protected override void OnClick(EventArgs e)
        {
            base.OnClick(e);
            MessageBox.Show("MyCourveShape clicked!");
        }
    }
}
最佳回答

你们还必须超越《希门试验》(Hit)方法。 基础实施仍然假定这是一个直线。

问题回答

暂无回答




相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签