C語言實(shí)現(xiàn)圖片放大縮小
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)圖片放大縮小的具體代碼,供大家參考,具體內(nèi)容如下
最終項(xiàng)目描述和效果
鼠標(biāo)按小圖,左鍵圖片縮小,右鍵圖片放大。
代碼如下
代碼大致的思路就是,當(dāng)鼠標(biāo)點(diǎn)擊指定的地方時(shí)。
將圖片的長寬,變化,在貼圖。
使用: 將圖片命名為1.jpg,并將其放在和.cpp文件同一文件夾下。
#include<stdio.h> #include<graphics.h> #include<conio.h> IMAGE maxImg;//大圖 IMAGE minImg;//小圖 struct picture { ?? ?int width;//寬 ?? ?int langth;//長 ?? ?int value;//比率 }; struct picture a={400,400,2}; void jia()//加載圖片 { ?? ?loadimage(&maxImg,"1.jpg"); ?? ?loadimage(&minImg,"1.jpg",60,60); } void show_p()//顯示圖片 { ?? ?putimage(20,20,&minImg); ?? ?putimage(100,0,a.width,a.langth,&maxImg,0,0); } void show() { ?? ?setbkcolor(WHITE);//設(shè)置窗口背景顏色 ?? ?cleardevice();//刷新一下 ?? ?setlinecolor(BLACK);//設(shè)置線的顏色 ?? ?setlinestyle(PS_SOLID,5);//設(shè)置線的樣式 ?? ?//畫矩形 ?? ?rectangle(0,0,500,400); ?? ?rectangle(0,0,100,400); ?? ?rectangle(0,133,100,133*2); ?? ?//顯示文字 ?? ?settextcolor(GREEN); ?? ?settextstyle(20,0,"黑體"); ?? ?outtextxy(10,180,"左鍵縮小"); ?? ?outtextxy(10,320,"右鍵放大"); ?? ?show_p(); } void to_small() { ?? ?if(a.langth!=1&&a.width!=1) ?? ?//不能讓長寬等于1,如果等于1的話那么長寬就會(huì)變?yōu)?,再次變大就有問題了. ?? ?{ ?? ??? ?a.width/=a.value; ?? ??? ?a.langth/=a.value; ?? ?} ?? ?loadimage(&maxImg,"1.jpg",a.width,a.langth); } void to_big() { ?? ?a.width*=a.value; ?? ?a.langth*=a.value; ?? ?loadimage(&maxImg,"1.jpg",a.width,a.langth); } void mouse() { ?? ?MOUSEMSG m; ?? ?while(1) ?? ?{ ?? ??? ?BeginBatchDraw();//雙緩存繪圖,解決閃屏問題 ?? ??? ?show(); ?? ??? ?m=GetMouseMsg(); ?? ??? ?switch(m.uMsg) ?? ??? ?{ ?? ??? ??? ?case WM_LBUTTONDOWN://左鍵 ?? ??? ??? ?if(20<=m.x&&m.x<=80&&m.y>=20&&m.y<=80) ?? ??? ??? ?{ ?? ??? ??? ??? ?//MessageBox(NULL,"鼠標(biāo)點(diǎn)擊圖片","123",MB_OK); ?? ??? ??? ??? ?to_small(); ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ??? ?case WM_RBUTTONDOWN://右鍵 ?? ??? ??? ?if(20<=m.x&&m.x<=80&&m.y>=20&&m.y<=80) ?? ??? ??? ?{ ?? ??? ??? ??? ?//MessageBox(NULL,"鼠標(biāo)點(diǎn)擊圖片","123",MB_OK); ?? ??? ??? ??? ?to_big(); ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?EndBatchDraw(); ?? ?} } int main(void) { ?? ?initgraph(500,400); ?? ?show(); ?? ?jia(); ?? ?mouse(); ?? ?return 0; }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
cin.get()和cin.getline()之間的區(qū)別
以下是對(duì)cin.get()和cin.getline()的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-09-09C語言實(shí)現(xiàn)掃雷小游戲完整算法詳解(附完整代碼)
掃雷游戲想必我們都有玩過,那么今天就用C語言來簡單實(shí)現(xiàn)“掃雷”小游戲,這篇文章主要給大家介紹了關(guān)于C語言實(shí)現(xiàn)掃雷小游戲完整算法的相關(guān)資料,文中給出了完整的實(shí)例代碼,需要的朋友可以參考下2022-06-06C++實(shí)現(xiàn)LeetCode(93.復(fù)原IP地址)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(93.復(fù)原IP地址),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07