表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
這個程序是專門為2017情人節而開發的,是在之前程序的基礎上,進行的總結和改進,使界面變得更加酷炫的夢幻,還增加了些許的浪漫氣息,很適合表白和裝逼使用。
由于這個程序酷炫,而且實現原理和編碼都不難,。如果你已經學過C或C++,那么只要跟著教程一步步操作,就完全可以在兩三天之內理解并實現出這個小程序。那么2018年5月20日快到了,你完全可以自己實現一個這樣的小程序。
效果:
注意點:
此圖是動態圖,以實物為準,畫是動態,蝴蝶也是動態的。
功能:
1.窗口透明;
2.顯示位圖;
開發環境:VS2013
開發語言:MFC + C/C++
主要代碼:
/*
設計想法是:
2. 然后再順時針方向依次顯示心形花兒;
3. 在心形圖案的中心,顯示一朵更大的花兒;
4. 繪制蝴蝶飛舞;
5. 在心形圖案的下方顯示祝福語和署名;
*/
int i = 0, j = 0;
// 花兒圖片參數
int iElapseSlow = 2000; // 停頓時間間隔
int iElapseFast = 1500; // 停頓時間間隔
int iFirstFlowerWidth = 450;
int iFirstFlowerHeight = 356;
int iFirstNumFrame = 21;
int iFirstNumFlowering = 7;
int iSecondFlowerWidth = 250;
int iSecondFlowerHeight = 198;
int iSecondNumFrame = 25;
int iSecondNumFlowering = 8;
// 獲取屏幕寬和高
int iWidth = ::GetSystemMetrics(SM_CXSCREEN);
int iHeight = ::GetSystemMetrics(SM_CYSCREEN);
// 初始化
for (i = 0; i
{
m_myFlower[i].myFlower.Init(IDB_BITMAP2, 0, 0, iSecondNumFrame, iSecondNumFlowering);
m_myFlower[i].myFlower.SetWidthHeight(iSecondFlowerWidth, iSecondFlowerHeight);
}
// 設置顯示坐標位置
m_myFlower[0].myFlower.SetPosXY(0, 0);
m_myFlower[1].myFlower.SetPosXY((iWidth - iSecondFlowerWidth), 0);
m_myFlower[2].myFlower.SetPosXY((iWidth - iSecondFlowerWidth), (iHeight - iSecondFlowerHeight));
m_myFlower[3].myFlower.SetPosXY(0, (iHeight - iSecondFlowerHeight));
// 顯示
for (i = 0; i
{
m_myFlower[i].bExist = TRUE;
Sleep(iElapseSlow); // 停頓
}
// 2. 然后再順時針方向依次顯示心形花兒
/*
將屏幕一部分看成是8x8的格子,則心形圖案為:
* * * * * * * *
* O O * O O * *
O * * O * * O *
O * * * * * O *
* O * * * O * *
* * O * O * * *
* * * O * * * *
* * * * * * * *
由于電腦屏幕大都是長方形,若屏幕高為iScreenHeight,
則我們就截取iScreenHeight x iScreenHeight 的區域
劃分為8x8的格子!
各個心形的坐標位置都可以計算出來!
先繪制左半邊,在繪制右半邊
*/
// 計算
int iPerImageWidth = iHeight / 8;
int iPerImageHeight = iHeight / 8;
int x = ((iWidth - iHeight) / 2) + (iPerImageWidth / 2);
int y = 0;
// 初始化
for (i = 4; i
{
m_myFlower[i].myFlower.Init(IDB_BITMAP1, x, y, iFirstNumFrame, iFirstNumFlowering);
m_myFlower[i].myFlower.SetWidthHeight(iPerImageWidth, iPerImageHeight);
}
// 設置顯示坐標位置
m_myFlower[4].myFlower.SetPosXY((x + 3*iPerImageWidth), (y + 2*iPerImageHeight));
m_myFlower[5].myFlower.SetPosXY((x + 2 * iPerImageWidth), (y + 1 * iPerImageHeight));
m_myFlower[6].myFlower.SetPosXY((x + 1 * iPerImageWidth), (y + 1 * iPerImageHeight));
m_myFlower[7].myFlower.SetPosXY((x + 0 * iPerImageWidth), (y + 2 * iPerImageHeight));
m_myFlower[8].myFlower.SetPosXY((x + 0 * iPerImageWidth), (y + 3 * iPerImageHeight));
m_myFlower[9].myFlower.SetPosXY((x + 1 * iPerImageWidth), (y + 4 * iPerImageHeight));
m_myFlower[10].myFlower.SetPosXY((x + 2 * iPerImageWidth), (y + 5 * iPerImageHeight));
m_myFlower[11].myFlower.SetPosXY((x + 3 * iPerImageWidth), (y + 6 * iPerImageHeight));
m_myFlower[12].myFlower.SetPosXY((x + 4 * iPerImageWidth), (y + 1 * iPerImageHeight));
m_myFlower[13].myFlower.SetPosXY((x + 5 * iPerImageWidth), (y + 1 * iPerImageHeight));
m_myFlower[14].myFlower.SetPosXY((x + 6 * iPerImageWidth), (y + 2 * iPerImageHeight));
m_myFlower[15].myFlower.SetPosXY((x + 6 * iPerImageWidth), (y + 3 * iPerImageHeight));
m_myFlower[16].myFlower.SetPosXY((x + 5 * iPerImageWidth), (y + 4 * iPerImageHeight));
m_myFlower[17].myFlower.SetPosXY((x + 4 * iPerImageWidth), (y + 5 * iPerImageHeight));
// 顯示
for (i = 4; i
{
m_myFlower[i].bExist = TRUE;
Sleep(iElapseFast); // 停頓
}
// 3. 在心形圖案的中心,顯示一朵更大的花兒
m_myFlower[18].myFlower.Init(IDB_BITMAP1, ((x + 3 * iPerImageWidth) + iPerImageWidth / 2) - (iFirstFlowerWidth / 2) ,
((y + 3 * iPerImageHeight) + iPerImageHeight / 2) - (iFirstFlowerHeight / 2), iFirstNumFrame, iFirstNumFlowering);
m_myFlower[18].myFlower.SetWidthHeight(iFirstFlowerWidth, iFirstFlowerHeight);
m_myFlower[18].bExist = TRUE;
Sleep(iElapseSlow); // 停頓
// 4. 繪制蝴蝶飛舞
m_myButterfly.myButterfly.Init(IDB_BITMAP3, 0, 0, 37, 0);
m_myButterfly.myButterfly.SetWidthHeight(iWidth, iHeight);
m_myButterfly.bExist = TRUE;
Sleep(iElapseSlow); // 停頓
// 5. 在心形圖案的下方顯示祝福語和署名
// 祝福語
m_myBless.myButterfly.Init(IDB_BITMAP4, (x + 1 * iPerImageWidth), (y + 5 * iPerImageHeight), 1, 0);
m_myBless.myButterfly.SetWidthHeight((6 * iPerImageWidth), iPerImageHeight);
m_myBless.bExist = TRUE;
Sleep(iElapseSlow); // 停頓
// LOGO
m_myLogo.myButterfly.Init(IDB_BITMAP5, (x + 6 * iPerImageWidth), (y + 1 * iPerImageHeight), 1, 0);
//m_myLogo.myButterfly.SetWidthHeight();
m_myLogo.bExist = TRUE;
以上為部分源碼,由于使用的是MFC編寫的,生成代碼過多,就不一一粘貼出來了.學習源于興趣,其實從做這種小東西開始。慢慢的越學越有意思,如果閣下正處學習階段,不妨參詳,讓學編程既有浪漫,又有豐富內容。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 批量下载图片,Python
- 下一篇: c语言程序设计多数求最大值,C语言编程问