## 3.9復雜圖形函數
復雜的畫圖函數利用2-D線性轉換能讓你畫出任意圖形。這個功能與Adobe? PostScript 語言實現的功能很相似,在X和Win32上,在畫線段之前所有的轉換頂點都是用整數表示,這就限制了畫圖的精確性。如果要畫比較精確的圖形,最好用OpenGL來畫。
```
void fl_push_matrix()
void fl_pop_matrix()
```
保存和恢復當前的轉換,堆棧的最大深度為4
```
void fl_scale(float x, float y)
void fl_scale(float x)
void fl_translate(float x, float y)
void fl_rotate(float d)
void fl_mult_matrix(float a, float b, float c, float d, float x, float y)
```
在當前的轉換基礎上連接另外一個轉換。旋轉角度是度數不是弧度,逆時針旋轉。
```
void fl_begin_line()
void fl_end_line()
```
開始和結束畫線
```
void fl_begin_loop()
void fl_end_loop()
```
開始和結束畫一系列封閉的線
```
void fl_begin_polygon()
void fl_end_polygon()
```
開始和結束畫多邊形并填充
```
void fl_begin_complex_polygon()
void fl_gap()
void fl_end_complex_polygon()
```
開始和結束畫一個復雜的多邊形并填充。這個多邊形可以是凹凸不同的,不連貫的,甚至中間有空心的。調用fl_gap()分開路徑。不必也是有害的如果在第一個頂點之前或最后一個頂點之后調用fl_gap()函數,在一行中多次調用也是不行的。
Fl_gap()只能用在fl_begin_complex_polygon()和fl_end_complex_polygon()之間。畫多邊形的輪廓,使用fl_begin_loop并用fl_end_loop和fl_begin_loop代替fl_gap();
```
void fl_vertex(float x, float y)
```
在當前路徑中增加一個頂點
```
void fl_curve(float x, float y, float x1, float y1, float x2, float y2, float x3, float y3)
```
在路徑中增加一系列的點畫Bezier 曲線。該曲線的末端是x,y和x3,y3。
```
void fl_arc(float x, float y, float r, float start, float end)
```
增加一系列的點在當前圓環的弧線上。在調用fl_arc()之前應用scale和rotate 可以得到橢圓的路徑。X,y是圓的中心,r是半徑。Fl_arc()從start角度畫弧直到end,按逆時針旋轉。如果end大于start則它是按照順時針轉
```
void fl_circle(float x, float y, float r)
```
fl_circle等于fl_arc(…,0,360),但是更快,如果你在畫多邊形的時候用到 圓,則必須用fl_arc().
文本的畫法
所有的文本都字體都是適用當前字體。現在還不明確在轉換情況下,位置或字符是否會改變
```
void fl_draw(const char *, int x, int y)
void fl_draw(const char *, int n, int x, int y)
```
在窗口中畫出字符串,位置是靠左,接近底線
```
void fl_draw(const char *, int x, int y, int w, int h, Fl_Align align, Fl_Image *img = 0, int draw_symbols = 1)
void fl_measure(const char *, int &w, int &h, int draw_symbols = 1)
int fl_height()
```
得到當前字體的高度
```
int fl_descent()
float fl_width(const char*)
float fl_width(const char*,int n)
float fl_width(uchar)
const char *fl_shortcut_label(ulong)
```
返回按鈕或菜單的快捷鍵字符串
- 第一章:FLTK編程模型
- 1.1FLTK功能簡介
- 1.2搭建FLTK開發環境
- 1.3FLTK構件簡介
- 1.4FLTK事件處理
- 1.5FLTK消息處理
- 1.6OpenGL編程
- 第二章:常用的控件和屬性
- 2.1按鈕
- 2.2文本
- 2.3顏色
- 2.4Box類型
- 第三章:FLTK的畫圖函數
- 3.1何時可以畫圖
- 3.2 FLTK的畫圖函數
- 3.3剪切
- 3.4顏色
- 3.5設置線條的屬性
- 3.6畫一般的圖形函數
- 3.7畫封閉的線,一次連接個頂點
- 3.8畫三邊形或四邊形,并填充內部
- 3.9復雜圖形函數
- 3.10字體
- 3.11覆蓋畫圖函數
- 第四章:在FLTK中自定義控件
- 4.1定制圖形控件說明
- 4.2如何開發一個控件的子類
- 4.3處理事件
- 4.4畫控件