文档章节

再学 GDI+[53]: 路径 - SetFillMode

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



代码文件:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure RadioGroup1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI, TypInfo;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  RadioGroup1.Columns := 2;
  RadioGroup1.Caption := '路径填充模式';
  for i := 0 to 1 do
    RadioGroup1.Items.Add(GetEnumName(TypeInfo(TFillMode), i));
  RadioGroup1.ItemIndex := 0;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
  b: TGPBrush;
  p: TGPPen;
  path: TGPGraphicsPath;
  rect: TRect;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  b := TGPHatchBrush.Create(HatchStyleCross, aclSilver, aclKhaki);
  p := TGPPen.Create(aclRed, 1.75);

  path := TGPGraphicsPath.Create;
  rect := Bounds(10, 20, 150, 100);
  path.AddEllipse(MakeRect(rect));
  OffsetRect(rect, 60, 0);
  path.AddEllipse(MakeRect(rect));

  if RadioGroup1.ItemIndex = 1 then path.SetFillMode(FillModeWinding);

  g.FillPath(b, path);
  g.DrawPath(p, path);

  p.Free;
  b.Free;
  path.Free;
  g.Free;
end;

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

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 184
  ClientWidth = 233
  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 RadioGroup1: TRadioGroup
    Left = 5
    Top = 137
    Width = 224
    Height = 39
    Caption = 'RadioGroup1'
    TabOrder = 0
    OnClick = RadioGroup1Click
  end
end

 
 
 
 
 

 

 

  

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

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
05/05
0
0
OSG3.2+Qt5.2.1+VS2012+OSGEarth 2.5编译问题记录

问题1:CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc201264opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake:16 (message): Failed to find "glu32" in "" with CMAKECXXLIBRARY_ARCHITECTURE ......

天蚕宝衣
2016/11/21
17
0
在C++Builder中使用GDI+的流程

在C++Builder中使用GDI+的流程: 1、 GDI+主要是通过gdiplus.dll进行调用,而BCB没有直接提供与gdiplus.dll对应的静态链接库,所以需要我们自己建立。如果在自己的计算机没有找到文件gdiplus...

hack_tian
04/11
0
0
MFC程序开机启动,图片无法加载,显示一片空白

开机时程序无法加载相应的图片,在应该有图片的地方显示为背景色。 程序使用GDI+加载图片,使用相对路径。当双击打开时程序显示正常,而当程序使用注册表添加到开机启动项时,程序开机时的主体部...

饕餮之怒
2013/05/18
607
1
C# WinForm开发系列 - GDI+

UI(User Interface)编程在整个项目开发过程中是个颇为重要的环节,任何好的解决方案若没有良好的用户界面呈现给最终用户,那么就算包含了最先进的技术也不能算是好程序。UI编程体现在两个方...

长征2号
2017/11/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java并发编程:volatile关键字解析

volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生...

engeue
14分钟前
0
0
通过ajax访问远程天气预报服务

http://www.webxml.com.cn/zh_cn/index.aspx 更改wsdl文件 打开文件将15行,51行,101行去掉 然后把文件复制到c盘 然后在桌面上面就生成了文件 将文件打成jar包 package cn.it.ws.weather;...

江戸川
今天
1
0
聊聊storm的tickTuple

序 本文主要研究一下storm的tickTuple 实例 TickWordCountBolt public class TickWordCountBolt extends BaseBasicBolt { private static final Logger LOGGER = LoggerFactory.getLogg......

go4it
今天
1
0
自动装箱和自动拆箱

自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基...

tsmyk0715
今天
2
0
简易审计系统

1、有时候我们需要对线上用户的操作进行记录,可以进行追踪,出现问题追究责任,但是linux自带的history并不会实时的记录(仅仅在内存中,当用户正常退出(exit logout )时才会记录到history文件里...

芬野de博客
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部