C#绘制蚂蚁线

delegate void LINEDDAPROC(int X, int Y, IntPtr lpData);
[DllImport("gdi32.dll")]
static extern int LineDDA(int nXStart, int nYStart, int nXEnd, int nYEnd,
    LINEDDAPROC lpLineFunc, IntPtr lpData);
 
private const byte PT_CLOSEFIGURE = 1;
private const byte PT_LINETO = 2;
private const byte PT_BEZIERTO = 4;
private const byte PT_MOVETO = 6;
 
[DllImport("gdi32.dll")]
static extern int SetPixel(IntPtr hdc, int X, int Y, int crColor);
 
GraphicsPath graphicsPath = new GraphicsPath();
private int counter = 0;
private IntPtr graphicsHandle = IntPtr.Zero;
//设计Zswang 2007-04-30 wjhu111#21cn.com 尊重作者,转贴请注明出处
 
private void button1_Click(object sender, EventArgs e)
{
    graphicsPath.ClearMarkers();
    graphicsPath.AddRectangle(new Rectangle(10, 10, 100, 100));
    timer1.Interval = 100;
    timer1.Enabled = true;
}
 
private void MovingDots(int X, int Y, IntPtr lpData)
{
    counter = (counter + 1) % 15;
    Color vColor;
    if (counter < 5)
        vColor = Color.White;
    else if (counter < 12)
        vColor = Color.Red;
    else vColor = Color.Blue;
    SetPixel(graphicsHandle, X, Y, vColor.R | vColor.G << 8 | vColor.B << 16);
}
 
private void timer1_Tick(object sender, EventArgs e)
{
    graphicsHandle = Graphics.FromHwnd(Handle).GetHdc();
    for (int i = 0; i < graphicsPath.PathPoints.Length; i++)
    {
        if (graphicsPath.PathTypes[i] == (byte)(PT_CLOSEFIGURE | PT_LINETO))
        {
            for (int j = i; j >= 0; j--)
            {
                if (graphicsPath.PathTypes[j] == PT_MOVETO)
                {
                    LineDDA(
                        (int)graphicsPath.PathPoints[i].X,
                        (int)graphicsPath.PathPoints[i].Y,
                        (int)graphicsPath.PathPoints[j].X,
                        (int)graphicsPath.PathPoints[j].Y,
                        MovingDots, IntPtr.Zero);
                    break;
                }
            }
            continue;
        }
        if (i == graphicsPath.PathPoints.Length - 1)
            LineDDA(
                (int)graphicsPath.PathPoints[i].X,
                (int)graphicsPath.PathPoints[i].Y,
                (int)graphicsPath.PathPoints[0].X,
                (int)graphicsPath.PathPoints[0].Y,
                MovingDots, IntPtr.Zero);
        else
            LineDDA(
                (int)graphicsPath.PathPoints[i].X,
                (int)graphicsPath.PathPoints[i].Y,
                (int)graphicsPath.PathPoints[i + 1].X,
                (int)graphicsPath.PathPoints[i + 1].Y,
                MovingDots, IntPtr.Zero);
    }
}

 

时间: 2024-09-19 15:11:29

C#绘制蚂蚁线的相关文章

PHOTOSHOP绘制一个超级闪亮的铅笔图标

  第一步 创建新文档 950 像素宽 600 像素高度. 分辨率设置为 300 像素/英寸和白色的背景.使一个矩形选区与风格的固定的大小,宽度为 400 像素和高度的 100 px. 第二步 拖动参考线并对齐选区的所有边缘和垂直中心. 第三步 打开渐变编辑器,选择预设菜单中的"金属".如果您无法看到列表中的预设,请单击以右,然后选择"金属"从列表中的三角形按钮.单击添加.创建一个新图层并将其命名"笔身".填充所选内容从底部到顶部的渐变. 第四步

教你用PS绘制水月洞天的纸艺效果

纸艺原本是用纸作为素材进行的创作,但由于PS中可以效仿纸的质感,因此设计师们不免会想到用PS来创作纸艺效果.这类效果的制作方法很简单,运用图层样式就能轻松做出纸的质感,但前提是要安排好纸张的层叠关系,还有许多细节需要我们在制作过程慢慢体会. 造形 STEP 01 先构思一个简单的场景,在纸上画出你的抽象图案.纸的层叠的三维表现在我的草图中是用颜色区别的.这里的颜色只是用作区分不同层叠之间的边界. STEP 02 再将手绘稿变为矢量图,将画稿拖入到PS中,新建一个图层,用钢笔工具沿着边线进行绘制.

PS绘制漂亮的春季花饰卡通女孩

  本教程介绍了PS绘制漂亮的春季花饰卡通女孩.作者想绘制一幅春季人物图片,因此构思的时候给人物加入了很多花朵及树叶等装饰,背景色也选用了嫩绿色这样可以更好的表现主题. 最终效果 1.我通常会在纸上或用Photoshop涂鸦,勾画作品将要呈现的整体面貌,以及描绘重要的细节.这能帮助我记录脑海中艺术灵感的片段,防止我遗忘一些重要的细节. 这一次,我想将春天拟人化,将其描绘成一位少女的模样.春天和自然的感觉--纯洁,焕然一新以及平静安宁,从沉睡中缓缓醒来--将给我们带来灵感的源泉. 我不想画面充斥着

PS绘制逼真的眼睛教程

  绘制眼睛之前需要对眼睛的构造有深刻的了解.然后画出草图,分层或分组把每一部分都单独画出来,再逐步刻画细节即可. 最终效果 1.首先先建立一个图层,每个图层各自承载不同的部分,避免绘画过程中出现问题导致无法修改. 1.先画出眼睛的大致轮廓.这个步骤不用刻画得太详细,只要大致外形捉准就好!小编这里是用数位板勾勒外形的,熟悉PS的朋友可以用PS里面的钢笔工具,设置好画笔的像素和颜色,再使用路径面板的描边功能. 2.主要是用PS的画笔工具绘制色块,然后用钢笔工具选择需要处理的区域,按住Ctrl+En

PS 15分钟快速绘制一个快播图标

  今天的教程@无梦不欢001 教大家绘制一个精美的快播图标,教程不难,主要是图层样式的运用,熟练的话15分钟就可以搞定.源文件已附上方便学习,来收! 分类: PS入门教程 ps图标制作教程

PS绘制一个太空中发光的行星教程

photoshop教程中我将为大家介绍如何轻松地使用photoshop中的云彩滤镜和扭曲滤镜制作一颗炫酷的行星.最终效果如图所示 1.创建一个新图片,大小为940*700,背景填充黑色,新建一个图层,使用套索工具(羽化50px)绘制一个椭圆选区,然后执行"滤镜-渲染-云彩",如图所示 2.按下Ctrl+L打开色阶调整框,应用下图所示的设置. 3.执行"滤镜-扭曲-旋转扭曲",如图所示 photoshop教程 4.设置角度为999,如图所示 分类: PS入门教程

PhotoShop剪贴蒙板运用创建流动的蚂蚁线

Photoshop初学者实例系列教程,在教程中我们将学习运用PS的剪贴蒙板制作流动的蚂蚁线动画效果,主要学习自定义图案.选区.描边.剪贴蒙板以及动画的制作,希望能给朋友们带来帮助~~ photoshop教程效果: 制作步骤很简单,但为方便初学者,可能有点啰嗦) 1.新建一个宽度为8像素,高度为1像素,背景为白色的新文件 2.把文件放到最大,使用矩形选框工具拉出一半的选区,填充黑色.(可以按D键将前景色恢复默认黑色,按Alt+delete填充前景色 3.定义图案,随便取一个名称,默认也行 分类:

控件-mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了

问题描述 mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了 //串口void CPort_testDlg::OnComm() { //if(stop)return; VARIANT m_input1; COleSafeArray m_input2; long lengthi; BYTE data[600]; CString str; int ai=0bi=0ci=0di=0; int sum=0; if(m_Comm.GetCommEvent()==2)

Photoshop鼠绘教程:绘制纯美的天使画面

本教程虽然是描写梦幻的天堂.不过很多元素都是我们所见过的,如鸽子,百合花等.而且数量还很多,刻画的时候可能要花费一定的时间.绘画的时候尽量保持画面干净,这样才能更好的突出天使的纯美.最终效果 1.用SAI起线稿,新建一个A4大小300分辨率的纸.我想画一个忧郁的天使,本来是应该画开朗的表情,但我却画成忧郁,是因为这个女孩在生前有一个悲伤的故事.而鸽子是和平的象征,百合是清纯的象征,我希望这些通过画面表现出一种力量,一种对比,一种感情中的华美. 在绘制草图时尽量不要让自己过早地进入到细节,可以先放