关的逻辑刷子的句柄; SetBrushOrgEx--设置指定设备描述表中当前选择刷子的原点; (四)画图和填充相关的 API 函数; BeginPaint--准备在指定窗口绘画或对指定区域进行填充; DrawAnimatedRects--NT 支持函数,画一环有游动边框的矩形; DrawCaption--NT 支持函数,为指定窗口的标题赋值; DrawEdge--为指定矩形画一道或多道边框; DrawFocusRect--画焦点矩形; DrawFrameControl--画一指定类型和风格的边框控件; DrawState--NT 支持函数,为图象画一可视效果标明其状态; DrawStateProc--NT 支持函数,调用为图象画一可视效果标明其状态的函数; DrawTextEx--NT 支持函数,在指定区域输出格式化文本; EndPaint--结束绘画; ExcludeUpdateRgn--将窗口无效部分(更新区域)从裁剪区中排除掉; GdiFlush--使当前 GDI 闪烁; GdiGetBatchLimit--获取缓冲 GDI 函数数量; GdiSetBatchLimit--设置缓冲 GDI 函数数量; GetBkColor--获取背景颜色; GetBkMode--
获取背景模式; GetBoundsRect--获取边界矩形; GetROP2--获取当前绘图模式; GetUpdateRect--获取指定窗口最小的矩形;
GetUpdateRgn--获取描述窗口中无效区的区域; GetWindowDC--获取窗口 DC; GetWindowRgn--获取窗口区域; GrayString--在指定位置画灰色文本; InvalidateRect--使 DC 指定的矩形无效; InvalidateRgn--使 DC 指定的矩形无效; LockWindowUpdate--禁止或允许在指定窗口中绘画; OutputProc--调用输出进程,向 GrayString 输送文本; PaintDesktop--NT 支持函数,在指定的窗口区域用指定的桌面颜色或墙纸填充裁剪区; RedrawWindow--更新客户区的指定区域或矩形; SetBkColor--设置背景颜色; SetBkMode--设置背景模式; SetBoundsRect--设置边界矩形; SetRectRgn--设置矩形区域; SetROP2--设置当前绘图模式; SetWindowRgn--设置窗口区域; UpdateWindow--更新窗口; ValidateRect--使客户区中指定矩形有效; ValidateRgn--使客户区中的指定区域有效; WindowFromDC--获取和指定窗口相关的句柄;
具体实现―― 1.本例以常见的统计图来说明问题。该例能实现对统计图的动态绘制,并且可以自定义 设置统计图的形状和颜色。 在说明问题之前, 来了解程序用到的一些比较复杂的函数或算法: 函数―― 1.Polygon(Points: array of TPoint) 用于绘出指定的多边形。括号内是预定点的集合,该集合可以在使用之前定义,也可以 在使用时同时定义,本例属于后者; 2.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint) 用于绘制饼状图, 饼状图其实就是椭圆的一部分。 在这些参数中, 其中(X1, Y1)和(X2, Y2) 定义了框住饼状图的矩形,而从椭圆中心发出的射线经过(X3, Y3)和(X4, Y4)两点,就把一 个饼状图截出来了。 3.FormatFloat(const Format: string; Value: Extended) 函数的意义是按指定方式格式化字符串,Format 指定了格式化的方式,Value 则指定了 要格式化的文本或其他数据。下面列举了一些范例,可供我们
学习时参考: 格式化符号(Format) 1234 -1234 0.5 0 1234 -1234 0.5 0 0 1234 -1234 1 0 0.00 1234.00 -1234.00 0.50 0.00 #.## 1234 -1234 .5 #,##0.00 1,234.00 -1,234.00 0.50 0.00 #,##0.00;(#,##0.00) 1,234.00 (1,234.00) 0.50 0.00 #,##0.00;;Zero 1,234.00 -1,234.00 0.50 Zero 0.000E+00 1.234E+03 -1.234E+03 5.000E-01 0.000E+00
#.###E-0 1.234E3 -1.234E3 5E-1 0E0 该例是在小数点后保留两位小数,因此用"##.##",具体见
程序代码中。
算法―― 本例的实现依赖一定的算法。这里介绍主要的两点: 1)在连接多边形各点时,我们要注意那几个点一定要构成一个闭合的图形,这就要保证 最后一个点要和第一个点重合。至于其他的点怎么布局,则要有一定的空间感。 我们先画一个矩形,然后再根据平行关系确定其他的点: rectangle(50,x,70,220); //画主