0
我使用Microsoft.VisualBasic。 PowerPacks。 LineShape組件。 這個組件很好,但我想繪製一條曲線而不是一條正確的線。我stardet修改OnPaint:繪製從LineShape繼承的新曲線形狀
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!");
}
}
}
我想這應該是一個有點複雜...在基地實施... ...看看 – serhio 2009-12-15 13:45:46
使用GraphicsPath.IsOutlineVisible與一個相對較胖的筆。同一個GraphicsPath對象適合繪畫。 – 2009-12-15 14:07:25