C語言實現(xiàn)圖片放大縮小
更新時間:2022年05月12日 14:19:33 作者:輝小歌
這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖片放大縮小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)圖片放大縮小的具體代碼,供大家參考,具體內容如下
最終項目描述和效果
鼠標按小圖,左鍵圖片縮小,右鍵圖片放大。
代碼如下
代碼大致的思路就是,當鼠標點擊指定的地方時。
將圖片的長寬,變化,在貼圖。
使用: 將圖片命名為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);//設置窗口背景顏色 ?? ?cleardevice();//刷新一下 ?? ?setlinecolor(BLACK);//設置線的顏色 ?? ?setlinestyle(PS_SOLID,5);//設置線的樣式 ?? ?//畫矩形 ?? ?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的話那么長寬就會變?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,"鼠標點擊圖片","123",MB_OK); ?? ??? ??? ??? ?to_small(); ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ??? ?case WM_RBUTTONDOWN://右鍵 ?? ??? ??? ?if(20<=m.x&&m.x<=80&&m.y>=20&&m.y<=80) ?? ??? ??? ?{ ?? ??? ??? ??? ?//MessageBox(NULL,"鼠標點擊圖片","123",MB_OK); ?? ??? ??? ??? ?to_big(); ?? ??? ??? ?} ?? ??? ??? ?break; ?? ??? ?} ?? ??? ?EndBatchDraw(); ?? ?} } int main(void) { ?? ?initgraph(500,400); ?? ?show(); ?? ?jia(); ?? ?mouse(); ?? ?return 0; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關文章
cin.get()和cin.getline()之間的區(qū)別
以下是對cin.get()和cin.getline()的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-09-09C++實現(xiàn)LeetCode(93.復原IP地址)
這篇文章主要介紹了C++實現(xiàn)LeetCode(93.復原IP地址),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下2021-07-07