文档章节

再学 GDI+[35]: TGPPen - 虚线画笔位移 - SetDashOffset

涂孟超
 涂孟超
发布于 2014/09/26 15:31
字数 261
阅读 4
收藏 0
本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI;

var
  n: Integer;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval := 100;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  p: TGPPen;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  p := TGPPen.Create(aclChocolate, 8);
  p.SetDashStyle(DashStyleDashDotDot);

  p.SetDashOffset(n);

  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, 0, 0);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, ClientWidth div 2, 0);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, ClientWidth, 0);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, ClientWidth, ClientHeight div 2);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, ClientWidth, ClientHeight);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, ClientWidth div 2, ClientHeight);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, 0, ClientHeight);
  g.DrawLine(p, ClientWidth div 2, ClientHeight div 2, 0, ClientHeight div 2);

  Dec(n);
  if n > Sqrt(Sqr(ClientWidth) + Sqr(ClientWidth)) then n := 0;

  p.Free;
  g.Free;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Repaint;
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 167
  ClientWidth = 242
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
  object Timer1: TTimer
    OnTimer = Timer1Timer
    Left = 112
    Top = 88
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/06/14/1221078.html

涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制

本系列文章由zhmxy555编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/7333886 作者:毛星云 邮箱: happylifemxy@qq.com 欢迎邮件交流编程心得 从本篇文章开始笔锋一...

长平狐
2012/11/12
146
0
第二章 2绘制线条简单图形

线条和形状 同Windows其它版本相比,Windows CE提供相当少的功能的领域之一就是基本线条绘制和形状绘制功能。用来创建复杂环形的Chord, Arc, 和Pie函数被去掉了。大部分使用"当前点[current ...

技术小胖子
2017/11/08
0
0
c#实现简单的手写板功能

在一些输入法程序菜单中经常有手写板功能,这些功能如何实现呢? 最直接的,我们可以使用Windows提供的GDI技术或GDI+技术来实现绘图功能。但是,要实现一个如此简单的涂鸦板,也不是那么容易...

crossmix
2015/09/28
2K
0
SVG描边动画

先上效果: 再上代码:svg1.html 1.stroke-dasharray 画笔虚线的每个线段的长度,见图 2.stroke-dashoffset 画笔虚线的起始偏移,大于0,向前移动,小于0,向后偏移 我们可以利用改变stroke-...

小尾巴儿
2016/11/04
32
0
C# 如何自定义DashStyle枚举值

画笔Pen有一个属性DashStyle,它的值为DashStyle枚举类行,DashStyle原本的枚举值有Custom、Dash、DashDot、DashDotDot、Dot、Solid,我只想要Dash、Dot、Solid三个值,并且以中文形式展现“...

Chouna
2012/07/21
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
今天
5
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
今天
8
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
12
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
16
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部