C语言实现图片放大缩小

Chloe ·
更新时间:2024-11-10
· 300 次阅读

本文实例为大家分享了C语言实现图片放大缩小的具体代码,供大家参考,具体内容如下

最终项目描述和效果

鼠标按小图,左键图片缩小,右键图片放大。

代码如下

代码大致的思路就是,当鼠标点击指定的地方时。
将图片的长宽,变化,在贴图。
使用: 将图片命名为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的话那么长宽就会变为0,再次变大就有问题了.     {         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; }



图片 C语言

需要 登录 后方可回复, 如果你还没有账号请 注册新账号