贝赛尔曲线

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  testgrid
{
    
public partial class Besier : Form
    
{
        
protected Point[] apt = new Point[4];
        
public Besier()
        
{
            BackColor 
= SystemColors.Window;
            ForeColor 
= SystemColors.WindowText;
            ResizeRedraw 
= true;
            OnResize(EventArgs.Empty);
            InitializeComponent();
        }

        
protected override void OnResize(EventArgs e)
        
{
            
base.OnResize(e);
            
int cx = ClientSize.Width;
            
int cy = ClientSize.Height;
            apt[
0= new Point(cx / 4, cy / 2);
            apt[
1= new Point(cx / 2, cy / 4);
            apt[
2= new Point(cx / 23 * cy / 4);
            apt[
3= new Point(3 * cx / 4, cy / 2);
        }

        
protected override void OnMouseDown(MouseEventArgs e)
        
{
            Point pt;
            
if (e.Button == MouseButtons.Left)
                pt 
= apt[1];
            
else if (e.Button == MouseButtons.Right)
                pt 
= apt[2];
            
else
                
return;
            Cursor.Position 
= PointToScreen(pt);
        }

        
protected override void OnMouseMove(MouseEventArgs e)
        
{
            
if (e.Button == MouseButtons.Left) 
            
{
                apt[
1= new Point(e.X, e.Y);
                Invalidate();
            }

            
else if (e.Button == MouseButtons.Right)
            
{
                apt[
2= new Point(e.X, e.Y);
                Invalidate();
            }

        }

        
protected override void OnPaint(PaintEventArgs e)
        
{
            Graphics g 
= e.Graphics;
            g.DrawBeziers(
new Pen(ForeColor), apt);
            Pen pen 
= new Pen(Color.FromArgb(0x80, ForeColor));
            g.DrawLine(pen, apt[
0], apt[1]);
            g.DrawLine(pen, apt[
2], apt[3]);
        }

    }

}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值