//數值微分畫線演算法(DDA)
void DDALine(int x1, int y1, int x2, int y2, COLORREF col)
{
int print_max_i = LINE_STYLE_DATA.thinkness - 1 >> 1;
int print_begin_i = -(LINE_STYLE_DATA.thinkness >> 1);
int ls_mode = LINE_STYLE_DATA.mode;
int printCnt = 0, thickCnt = 0;
auto printPixel = [&thickCnt, &printCnt, print_max_i, print_begin_i, ls_mode](int x, int y, COLORREF col, bool dir/*0橫向 1縱向*/) {
if (thickCnt >= LINE_STYLE_DATA.thinkness) {
printCnt = (printCnt + 1) % 32;
thickCnt = 0;
}
thickCnt++;
if ((LINE_STYLE_DATA.pattern & (1 << printCnt)) == 0) {
return;
}
if (LINE_STYLE_DATA.mode == MD_LS_SQUARE) {
printCnt = (printCnt + 1) % 32;
thickCnt = -LINE_STYLE_DATA.thinkness;
}
if (ls_mode == MD_LS_LINE) {
for (int i = print_begin_i; i <= print_max_i; i++) {
if (dir == 0) {
putpixel(x + i, y, col);
}
else {
putpixel(x, y + i, col);
}
}
}
else if (ls_mode == MD_LS_SQUARE) {
for (int i = print_begin_i; i <= print_max_i; i++) {
for (int j = print_begin_i; j <= print_max_i; j++) {
putpixel(x + i, y + j, col);
}
}
}
};
double k = (y2 - y1) / (double)(x2 - x1);
if (abs(k) <= 1) {
if (x2 < x1) {
swap(x1, x2);
swap(y1, y2);
}
for (double x = x1, y = y1; x <= x2; x++) {
printPixel((int)x, (int)(y + 0.5), col, 1);
y += k;
}
}
if (abs(k) > 1) {
if (y2 < y1) {
swap(x1, x2);
swap(y1, y2);
}
for (double x = x1, y = y1; y <= y2; y++) {
printPixel((int)(x + 0.5), (int)y, col, 0);
x += 1 / k;
}
}
}```
1
相關文章
- 1*1卷積卷積
- MySQL-where 1=1MySql
- HTML和CSS <h1> --1-- <h1>HTMLCSS
- CREATE INDEX index1 ON table1(col1)Index
- 1 Day11--API1API
- 1+1+1: 專案型組織變革利器(轉)
- 吳恩達機器學習筆記(1-1到2-1)吳恩達機器學習筆記
- Pygame第1-1課:入門GAM
- 1-4序列的應用1
- 分享—1
- MySQL(1)MySql
- 介面1
- Chapter 1APT
- 機器學習-1機器學習
- java(1)Java
- JavaScript(1)JavaScript
- DHTML【1】HTML
- swift (1)Swift
- SDWebimage(1)Web
- 12,javase程式碼實戰-迴圈控制——用while計算1+1/ 2!+1/ 3!+....+1/ 10!(三)JavaWhile
- [BT5]資訊收集1-1 DnsenumDNS
- 1day漏洞反推技巧實戰(1)
- 高仿包和1:1包區別
- 詳解 1x1 卷積核卷積
- Mybatis where 1=1 動態sql問題MyBatisSQL
- Python_1_Codecademy_1_SyntaxPython
- Oracle JOB'NEXT_TIME into 4000/1/1Oracle
- 程式設計疑問:文字與檔案、HTTP 1 0 與 HTTP 1 1程式設計HTTP
- 請教cmp關聯的問題,1:1,1:n多關係
- 社交直播APP 社交直播原始碼 1對1與1對多直播系統APP原始碼
- 【自制程式語言】1 - 基本語句(1)
- NEO改進協議提案1(NEP-1)協議
- PostgreSQL 原始碼解讀(1)- 插入資料#1SQL原始碼
- 演算法 1~n中1的次數演算法
- Presentation Skills 1: The Overview and the Agenda C1-Upper-IntermediateView
- ConstraintLayout 水平比例佈局 1:1:2AI
- raid1+0 and raid0+1AI
- Linux Shell 1>/dev/null 2>&1 含義LinuxdevNull