两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

Dotcpp  >  編程教程  >  C/C++工具及其他類項(xiàng)目  >  C語言藝術(shù)字輸出“Hello World!”教程及源碼

C語言藝術(shù)字輸出“Hello World!”教程及源碼

點(diǎn)擊打開在線編譯器,邊學(xué)邊練

一、項(xiàng)目介紹

這是一個(gè)用C語言輸出的藝術(shù)字“HelloWorld!”。

還記得你第一次用C語言輸出“HelloWorld!”嗎?很簡(jiǎn)單吧!

編譯環(huán)境:VC6

第三方庫:Easyx2022  注意需要提前安裝easyX,如沒有基礎(chǔ)可以先了解easyX圖形編程

二、運(yùn)行截圖

藝術(shù)字“HelloWorld!”

藝術(shù)字“HelloWorld!”

三、代碼思路

1.引入圖形庫頭文件

#include <graphics.h>

2.定義全局變量

POINT *g_pDst;
POINT *g_pSrc;
int g_nWidth;
int g_nHeight;
int g_nCount;

3.主函數(shù)

void main()
{
initgraph(640, 480);
DWORD* pBuf = GetImageBuffer();
GetDstPoints();
GetSrcPoints();
int x, y;
for (int i = 2; i <= 256; i += 2)
{
COLORREF c = RGB(i - 1, i - 1, i - 1);
Blur(pBuf);
for (int d = 0; d < g_nCount; d++)
{
x = g_pSrc[d].x + (g_pDst[d].x - g_pSrc[d].x) * i / 256;
y = g_pSrc[d].y + (g_pDst[d].y - g_pSrc[d].y) * i / 256;
pBuf[y * 640 + x] = c;
}
Sleep(5);
}

四、完整源碼

#include <graphics.h>
#include <conio.h>
#include <time.h>
// 定義全局變量
POINT *g_pDst;// 點(diǎn)集(目標(biāo))
POINT *g_pSrc;// 點(diǎn)集(源)
int g_nWidth;// 文字的寬度
int g_nHeight;// 文字的高度
int g_nCount;// 點(diǎn)集包含的點(diǎn)的數(shù)量
// 獲取目標(biāo)點(diǎn)集
void GetDstPoints()
{
// 設(shè)置臨時(shí)繪圖對(duì)象
IMAGE img;
SetWorkingImage(&img);
// 定義目標(biāo)字符串
TCHAR s[] = _T("Hello World!");
// 計(jì)算目標(biāo)字符串的寬高,并調(diào)整臨時(shí)繪圖對(duì)象的尺寸
setcolor(WHITE);
setfont(100, 0, _T("Arial"));
g_nWidth = textwidth(s);
g_nHeight = textheight(s);
Resize(&img, g_nWidth, g_nHeight);
// 輸出目標(biāo)字符串至 img 對(duì)象
outtextxy(0, 0, s);
// 計(jì)算構(gòu)成目標(biāo)字符串的點(diǎn)的數(shù)量
int x, y;
g_nCount = 0;
for(x = 0; x < g_nWidth; x++)
for(y = 0; y < g_nHeight; y++)
if (getpixel(x, y) == WHITE)
g_nCount++;
// 計(jì)算目標(biāo)數(shù)據(jù)
g_pDst = new POINT[g_nCount];
int i = 0;
for(x = 0; x < g_nWidth; x++)
for(y = 0; y < g_nHeight; y++)
if (getpixel(x, y) == WHITE)
{
g_pDst[i].x = x + (640 - g_nWidth) / 2;
g_pDst[i].y = y + (480 - g_nHeight) / 2;
i++;
}
// 恢復(fù)對(duì)屏幕的繪圖操作
SetWorkingImage(NULL);
}
// 獲取源點(diǎn)集
void GetSrcPoints()
{
// 設(shè)置隨機(jī)種子
srand((unsigned int)time(NULL));
// 設(shè)置隨機(jī)的源數(shù)據(jù)
g_pSrc = new POINT[g_nCount];
for(int i = 0; i < g_nCount; i++)
{
g_pSrc[i].x = rand() % 640;
g_pSrc[i].y = rand() % 480;
}
}
// 全屏模糊處理(忽略屏幕第一行和最后一行)
void Blur(DWORD* pMem)
{
for(int i = 640; i < 640 * 479; i++)
{
pMem[i] = RGB(
(GetRValue(pMem[i]) + GetRValue(pMem[i - 640]) + GetRValue(pMem[i - 1]) + GetRValue(pMem[i + 1]) + GetRValue(pMem[i + 640])) / 5,
(GetGValue(pMem[i]) + GetGValue(pMem[i - 640]) + GetGValue(pMem[i - 1]) + GetGValue(pMem[i + 1]) + GetGValue(pMem[i + 640])) / 5,
(GetBValue(pMem[i]) + GetBValue(pMem[i - 640]) + GetBValue(pMem[i - 1]) + GetBValue(pMem[i + 1]) + GetBValue(pMem[i + 640])) / 5);
}
}
// 主函數(shù)
void main()
{
// 初始化
initgraph(640, 480);// 創(chuàng)建繪圖窗口看
DWORD* pBuf = GetImageBuffer();// 獲取顯示緩沖區(qū)指針
GetDstPoints();// 獲取目標(biāo)點(diǎn)集
GetSrcPoints();// 獲取源點(diǎn)集
// 運(yùn)算
int x, y;
for (int i = 2; i <= 256; i += 2)
{
COLORREF c = RGB(i - 1, i - 1, i - 1);
Blur(pBuf);// 全屏模糊處理
for (int d = 0; d < g_nCount; d++)
{
x = g_pSrc[d].x + (g_pDst[d].x - g_pSrc[d].x) * i / 256;
y = g_pSrc[d].y + (g_pDst[d].y - g_pSrc[d].y) * i / 256;
pBuf[y * 640 + x] = c;// 直接操作顯示緩沖區(qū)畫點(diǎn)
}
Sleep(5);// 延時(shí)
}
// 清理內(nèi)存
delete g_pDst;
delete g_pSrc;
// 按任意鍵退出
_getch();
closegraph();
}

本文固定URL:http://www.sztianhecheng.cn/course/1374

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個(gè)爬蟲的Python編程課程

只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

趣味項(xiàng)目教程
第一章 C/C++游戲類項(xiàng)目
第二章 C/C++工具及其他類項(xiàng)目
第三章 Python趣味項(xiàng)目
Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)