我使用Microsoft.VisualBasic。 PowerPacks 。 LineShape组件。 这个组件很好,但我想画一条曲线而不是一条右线。我stardet修改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)});
}
正确绘制组件,但它不会检测鼠标事件(单击,向下)。请帮忙,这是我的整个测试代码:
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!");
}
}
}
答案 0 :(得分:1)
您还必须覆盖HitTest()方法。基础实现仍然假设它是一条直线。