C語言實現(xiàn)圖片放大縮小
更新時間:2022年05月12日 14:19:33 作者:輝小歌
這篇文章主要為大家詳細介紹了C語言實現(xiàn)圖片放大縮小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了C語言實現(xiàn)圖片放大縮小的具體代碼,供大家參考,具體內(nèi)容如下
最終項目描述和效果
鼠標按小圖,左鍵圖片縮小,右鍵圖片放大。

代碼如下
代碼大致的思路就是,當鼠標點擊指定的地方時。
將圖片的長寬,變化,在貼圖。
使用: 將圖片命名為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的話那么長寬就會變?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;
}以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
cin.get()和cin.getline()之間的區(qū)別
以下是對cin.get()和cin.getline()的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助2013-09-09
C++實現(xiàn)LeetCode(93.復(fù)原IP地址)
這篇文章主要介紹了C++實現(xiàn)LeetCode(93.復(fù)原IP地址),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07

