当前位置: 首页 > news >正文

工商所什么网站可做年报互联网之光博览会

工商所什么网站可做年报,互联网之光博览会,网站建设制作免费咨询,seo兼职招聘信息到了最终成果阶段了#xff0c;虽然中间有一些代码讲起来没有意思#xff0c;纯靠debug,1-1解决贴图网格不重合问题#xff0c;这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子#xff0c;开发时间也从2023年的4月16到了6月2号#xff0c;80小时基本…到了最终成果阶段了虽然中间有一些代码讲起来没有意思纯靠debug,1-1解决贴图网格不重合问题这次是一个分支结束。 想着就是把瓦片贴进大地图里。 延续这几篇帖子开发时间也从2023年的4月16到了6月2号80小时基本砸进去才出靠谱效果。 45天平均每天两小时。 DevC easyx实现图片拖动一种悬浮窗实现原理与完整代码-CSDN博客 DevC easyx实现悬浮窗放入网格与在函数分离过程中遇到的BUG下理解 函数的作用时域 以及 初始化与复位的关系。-CSDN博客 DevC easyx实现地图拖动超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 这次迭代过程是贴图放到视口上然后视口直接再粘贴到大地图上然后就导致绘图瓦片重叠而且也没来及考虑复位问题就立马意识到还没设置网格。这里走的是网格贴图路线。 然后网格检测贴图位置属于哪个网格鼠标松开就被嵌入到哪个网格上。 然后这里设置的是网格长宽80像素就用了数据图像位置变换xx-x%80;这样保留能被80整除的部分然后pxx/80,得到所属网格的序号这样就存储了贴图。 至于边界就是处理鼠标位移和大地图坐标变化的问题。视口和采样区域是1:1或者说是视口复制粘贴到大地图上成为采样图片所以视口上鼠标移动多少就是采样图上移动多少然后算出来鼠标位置和视口左上角的距离在大地图里可以拿采样图左上角的坐标再加上这个数据就是鼠标实际在大地图里面的坐标。 不多说上效果 先放一个局部代码跑不起来因为适配的代码太庞大文章后面有两个版本-集成版和cpp .h组合版 extern IMAGE maptile;void didshow(IMAGE *set,IMAGE maptile,ExMessage m,int show_x,int show_y,int nowlx,int nowly) {static int flag0;static int oldx-8,oldy-8;int putx,puty;IMAGE olds(80,80);if(m.messageWM_LBUTTONDOWN) {SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);SetWorkingImage();} else{if(putxoldxputyoldy) {} else {if(m.messageWM_LBUTTONDOWN) {}printf(show %d %d\n,m.x,m.y);SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);oldxputx;oldyputy;SetWorkingImage();}} }代码比较多先放一个整合版.h分类版本看下面其他代码 这里是整合版。 devc里新建项目选择Multimedia里的Easyx 然后复制粘贴跑就行。 按键操作说明 “本程序采用外装easy x拓展库的DEVc制作而成 是跳一跳游戏配套编辑器 性质与单通道技能不同是起跳前动画 操作说明 左键长按在网格绘制 右键在网格设置锚点 拖动网格左上角图片到中间的绿色区域暂存 左键点击绿色区域 在黄色区域的左上角就会出现相同形状说明已选择 然后在黄色区域左键长按或者单击左键实现贴图 黄色区域右键移动大地图 按F1 清屏 按F2 导出为 png格式图片自动命名为“gamemap” gamemap0gamemap1gamemap2....gamemap9为游戏可以读取的有效文件分别对应关卡1,2,3,4....9 粘贴到游戏目录实现自定义背景” 这是整合版新建项目复制粘贴就能跑 #includestdio.h #includegraphics.h //INputboX #includewindows.h //Sleep(2000); //在中断休止 #include conio.h // kbhit(void);检测按键无也继续下去 #includestring.h //保存导入输入//#includeoripic.h //#includeshow.h //#includedraw.h //#includeflowsave.h //#includemovecheck.h //#includebuttoncheck.h //#includekeycheck.hint w3600; int h800; int w23,h27; int x2650,y2100; int showx3101,showy3100;extern int w,h; IMAGE set(w,h);struct pixlocal {short x;short y; };struct skline {int lenth0;int setx,sety;struct pixlocal a[10000]; } nf,ndnf;struct drawdesksize {int x;int y;int a;int h;int sizetile8;int smx;int smy; } ddm;IMAGE maptile(ddm.a/ddm.sizetile,ddm.h/ddm.sizetile);struct pircle {IMAGE img2;IMAGE img3;int orilx,orily;int nowlx,nowly;int a,h; // 原有图片的左上角坐标int m1x0,m1y0;int putflag0;int drawflag0;struct skline b; } save;struct picsave {int lx;int ly;int wide;int h;int useflag;struct skline b; } a[28];void oripicdesk(int a,int h) {initgraph(a,h,EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice(); // 创制绘图界面背景色设置以背景色填充。setlinecolor(BLACK);setlinestyle(PS_SOLID,1); // 不含实线矩形的面积为8*8含实线9*9.rectangle(0,0,a-2,h-1);//确定工作界面范围setfillcolor(WHITE); }void oridrawdesksize(struct drawdesksize* ddm,int x,int y) {ddm-xx;ddm-yy;ddm-a640;ddm-h640;ddm-sizetile8;ddm-smxddm-x-ddm-a/ddm-sizetile;ddm-smyddm-y-ddm-h/ddm-sizetile; }void drawdesk(struct drawdesksize ddm) {int i,j;int squareddm.sizetile;for(iddm.x; iddm.xddm.a-square; isquare) {for(jddm.y; jddm.yddm.h; jsquare) {fillrectangle(i,j,isquare,jsquare);}}rectangle(ddm.smx-1,ddm.smy-1,ddm.x,ddm.y); }void oripircle(struct pircle *save,struct drawdesksize *ddm) {save-orilxddm-smx,save-orilyddm-smy;save-nowlxddm-smx,save-nowlyddm-smy;save-addm-a/ddm-sizetile;save-hddm-h/ddm-sizetile; // 原有图片的左上角坐标save-m1x0,save-m1y0;save-putflag0;save-drawflag0; }void oriset(IMAGE *set,struct drawdesksize ddm,int w,int h) {SetWorkingImage(set);setbkcolor(YELLOW);cleardevice();setlinecolor(BLACK);for(int i0; ih; iddm.a/ddm.sizetile) {for(int j0; jw; jddm.h/ddm.sizetile)rectangle(j1,i1,jddm.a/ddm.sizetile,iddm.h/ddm.sizetile);}line(0, 0, 800, 1400);SetWorkingImage(); }extern struct skline nf,ndnf;extern IMAGE maptile;void didshow(IMAGE *set,IMAGE maptile,ExMessage m,int show_x,int show_y,int nowlx,int nowly) {static int flag0;static int oldx-8,oldy-8;int putx,puty;IMAGE olds(80,80);if(m.messageWM_LBUTTONDOWN) {SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);SetWorkingImage();} else{if(putxoldxputyoldy) {} else {if(m.messageWM_LBUTTONDOWN) {}printf(show %d %d\n,m.x,m.y);SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);oldxputx;oldyputy;SetWorkingImage();}} }void show(IMAGE *set,ExMessage m,int show_x,int show_y,int show_wideth,int show_height) { // 视口的图片大小视口的大小在窗口的坐标视口的大小static int nowlx,nowly,pic_wide,pic_heigh;static int m1x,m1y;static int drawflag,putflag,attachflag;static IMAGE olds(show_wideth,show_height);static IMAGE news(show_wideth,show_height);static int m2x,m2y; // 加速移动设置自动移动设置。static int flag1;if(flag1) {pic_wideshow_wideth;pic_heighshow_height;m1x0;m1y0;m2x0;m2y0;drawflag0;putflag0;attachflag0;flag0;setlinecolor(BLACK);rectangle(show_x,show_y,show_xshow_wideth,show_yshow_height);BeginBatchDraw();SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh);SetWorkingImage();putimage(show_x,show_y,olds);EndBatchDraw();} else {if(m.messageWM_LBUTTONDOWN) {if(m.ctrlm.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) {putflagtrue; // 启动批复制粘贴 // printf(%d\n,door.putflag);SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh); // 获取视口里的图片 //m1xm.x;m1ym.y;m2xm.x;m2ym.y; // printf(%d %d\n,m1x,m1y);SetWorkingImage();} else if (m.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) { // printf(333333\n);didshow(set,maptile,m,show_x,show_y,nowlx,nowly);attachflagtrue;}} else if(attachflagtruem.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) {didshow(set,maptile,m,show_x,show_y,nowlx,nowly);if(m.messageWM_LBUTTONUP) {attachflagfalse;}SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh);SetWorkingImage();putimage(show_x,show_y,olds);} else if(putflagtrue) {BeginBatchDraw();SetWorkingImage();SetWorkingImage(set);nowlxnowlx-5*(m.x-m1x);nowlynowly-5*(m.y-m1y); // 进行了位移放大。 // 位移同鼠标位移方向相反大小相同m1xm.x;m1ym.y;getimage(olds,nowlx,nowly,pic_wide,pic_heigh); // 获取新地方的底图为了下次重现不干扰下次获取临近底图。 // putimage(save-nowlx,save-nowly,save-img2);SetWorkingImage();putimage(show_x,show_y,olds); // putimage(500,500,save-img3);EndBatchDraw();// 一次绘图出来没有屏闪了if(m.messageWM_LBUTTONUP||m.ctrl0) {putflag0;}}}}extern IMAGE maptile;//用于设置绘图画布大小 //用于记录轨迹 void remem(struct ExMessage m,int *lenth,struct drawdesksize ddm) {int i*lenth;static int oldx-ddm.sizetile,oldy-ddm.sizetile,addm.sizetile,hddm.sizetile;if(m.xoldxm.xoldxam.yoldym.yoldyh) { //节约运算只在绘制时进行坐标变换} else {int px0,py0,qx0,qy0;int mapqx0,mapqy0;//修正可涂色范围,防止溢出。y不可等于640100x等于640600-1是边界小方块的最右侧像素pxm.x-ddm.x;pym.y-ddm.y;//修正600的偏移601600101%8 600600601-600%8qxpx-px%a;qypy-py%h;mapqxqx/a;mapqyqy/h;pxddm.xqx;pyddm.yqy;setfillcolor(BLACK);fillrectangle(px,py,pxddm.sizetile,pyddm.sizetile) ;nf.a[i].x mapqx;nf.a[i].y mapqy;i;*lenthi;nf.lenth*lenth;printf(%d %d %d\n,i-1,nf.a[i-1].x,nf.a[i-1].y);putpixel(ddm.smxnf.a[i-1].x,ddm.smynf.a[i-1].y,BLACK);oldxpx;oldypy;} }void draw(ExMessage m,int *lenth) { // 绘制的函数static int flag0;if(m.messageWM_LBUTTONDOWN) {remem(m,lenth,ddm); // printf(222\n);flag1;} else if(flag1) {remem(m,lenth,ddm);if(m.messageWM_LBUTTONUP) {flag0;}} }void drawmousecheck(ExMessage m,int *lenth,struct drawdesksize * ddm) {if(m.xddm-xm.xddm-xddm-am.yddm-ym.yddm-yddm-h) {draw(m,lenth); // printf(333\n);}}void oriflowsave(int x,int y,int w,int h){setfillcolor(GREEN);int i;int num0;for(int j0; jh; j) {for(i1; iw; i) {a[num].lxx1i*81;a[num].lyy1j*81;a[num].wide80;a[num].h80;a[num].useflag0;fillrectangle(a[num].lx,a[num].ly,a[num].lxa[num].wide,a[num].lya[num].h);num;}} }void rehave(ExMessage m,int w,int h) {int i;int num0;for(int j0; jw; j) {for(i1; ih;i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag1) {ndnfa[num].b;break;}}num;}} }void pickpen(ExMessage m,int w,int h) {int i,j;int num0;for(j0; jw; j) {for(i1; ih; i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag1) {getimage(maptile,a[num].lx,a[num].ly,80,80);fillrectangle(20,80,100,160);putimage(20,80,maptile);}}num;}} }void flowsave(ExMessage m,struct pircle *save,int w,int h) {if(m.messageWM_LBUTTONDOWN) {pickpen(m,w,h);} else if(m.messageWM_LBUTTONUP) { // 单机直接粘贴bug但是可以作为长按的刷新接入其他地方int i;int num0;for(int j0; jw; j) {for(i1; ih; i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag0) {a[num].bnf;if(save-nowlx!save-orilxsave-nowly!save-orily) {putimage(save-nowlx,save-nowly,save-img3);} else {getimage(save-img2,save-orilx,save-orily,save-a,save-h);}putimage(a[num].lx,a[num].ly,save-img2);save-nowlxsave-orilx;save-nowlysave-orily;save-m1x0;save-m1y0; // printf(%d\n,save-m1x);save-putflagfalse;a[num].useflag1;break;}}num;}}}if(m.messageWM_RBUTTONDOWN) {rehave(m,w,h);}}extern int w2,h2;void movecheck(struct ExMessage m,struct pircle *save) {if(save-putflag0m.messageWM_LBUTTONDOWN) {if(save-m1x0save-m1y0m.xsave-orilxm.xsave-orilxsave-am.ysave-orilym.ysave-orilysave-h) {getimage(save-img2,save-orilx,save-orily,save-a,save-h);getimage(save-img3,save-orilx,save-orily,save-a,save-h);save-m1xm.x;save-m1ym.y;save-putflagtrue;printf(2222\n);} else if(m.xsave-nowlxm.xsave-nowlxsave-am.ysave-nowlym.ysave-nowlysave-h) {save-putflagtrue;getimage(save-img2,save-orilx,save-orily,save-a,save-h);save-m1xm.x;save-m1ym.y; // printf(11111\n);}} else if(save-putflagtrue) {BeginBatchDraw();putimage(save-nowlx,save-nowly,save-img3);save-nowlxsave-nowlxm.x-save-m1x;save-nowlysave-nowlym.y-save-m1y;save-m1xm.x;save-m1ym.y;getimage(save-img3,save-nowlx,save-nowly,save-a,save-h);putimage(save-nowlx,save-nowly,save-img2);EndBatchDraw();if(m.messageWM_LBUTTONUP) {save-putflag0;} // 一次绘图出来没有屏闪了}}void buttonscheck(ExMessage m,struct pircle *save) {static int flag0;if(flag0) {rectangle(20,20,60,40);flowsave(m,save,w2,h2);flag1;}movecheck(m,save);flowsave(m,save,w2,h2);}extern IMAGE set;//重置绘图版功能 void ori(struct drawdesksize ddm) {int i,j;int squareddm.sizetile;setfillcolor(WHITE);setlinecolor(GREEN);for(iddm.x; iddm.xddm.a-square; isquare) {for(jddm.y; jddm.yddm.h; jsquare) {fillrectangle(i,j,isquare,jsquare);}}for(iddm.smx; iddm.smxddm.a/ddm.sizetile; i) {for(jddm.smy; jddm.smyddm.h/ddm.sizetile; j) {putpixel(i,j,WHITE);}} // rectangle(ddm.smx-1,ddm.y-1,ddm.x,ddm.y);}void pixnf(int lenth,struct drawdesksize ddm) { // 小地图打印int i0;for(i0; ilenth; i) {putpixel(ddm.smxnf.a[i].x,ddm.smynf.a[i].y,WHITE);if(i%550)Sleep(1);}for(i0; ilenth; i) {putpixel(ddm.smxnf.a[i].x,ddm.smynf.a[i].y,BLACK);if(i%550)Sleep(1);} }void keycheck(ExMessage m,int *lenth) {switch(m.vkcode) {case VK_F1:ori(ddm);*lenth0; // 优化清屏后叠加在小地图bugbreak;case VK_F2 :saveimage(_T(gamemap.png),set);break;case VK_F5 :static int limf50;if(limf50) {pixnf(*lenth,ddm);limf51;break;} else {limf50;} // 限制一次按动一次调用因为获取getmessage函数有连续两次探测。break;}}int main() {oripicdesk(1800,870);oridrawdesksize(ddm,1000,100);oripircle(save,ddm);oriset(set,ddm,w,h); //初始化表格界面setlinecolor(BLACK);oriflowsave(x2,y2,w2,h2);drawdesk(ddm);ExMessage m;int lenth0;while (1) {m getmessage(EX_MOUSE | EX_KEY);drawmousecheck(m,lenth,ddm);keycheck(m,lenth);buttonscheck(m,save);show(set,m,showx3,showy3,600,700);}closegraph();return 0; }上面的整合版本是展示 下面是实际开发.h组合cpp的版本 分类说明 .h版本的功能模块 主函数可以看出来一次循环执行内容功能与名称相统一。 main.cpp文件代码 新建项目复制粘贴有的保存为cpp,有的保存为.h文件 原始版本 #includestdio.h #includegraphics.h //INputboX #includewindows.h //Sleep(2000); //在中断休止 #include conio.h // kbhit(void);检测按键无也继续下去 #includestring.h //保存导入输入#includeoripic.h #includeshow.h #includedraw.h #includeflowsave.h #includemovecheck.h #includebuttoncheck.h #includekeycheck.hint w3600; int h800; int w23,h27; int x2650,y2100; int showx3101,showy3100;int main() {oripicdesk(1800,870);oridrawdesksize(ddm,1000,100);oripircle(save,ddm);oriset(set,ddm,w,h); //初始化表格界面setlinecolor(BLACK);oriflowsave(x2,y2,w2,h2);drawdesk(ddm);ExMessage m;int lenth0;while (1) {m getmessage(EX_MOUSE | EX_KEY);drawmousecheck(m,lenth,ddm);keycheck(m,lenth);buttonscheck(m,save);show(set,m,showx3,showy3,600,700);}closegraph();return 0; } oripic.h文件代码 初始化但是这个函数属于最后写的把一些代码整合美观一点。其他没啥用 extern int w,h; IMAGE set(w,h);struct pixlocal {short x;short y; };struct skline {int lenth0;int setx,sety;struct pixlocal a[10000]; } nf,ndnf;struct drawdesksize {int x;int y;int a;int h;int sizetile8;int smx;int smy; } ddm;IMAGE maptile(ddm.a/ddm.sizetile,ddm.h/ddm.sizetile);struct pircle {IMAGE img2;IMAGE img3;int orilx,orily;int nowlx,nowly;int a,h; // 原有图片的左上角坐标int m1x0,m1y0;int putflag0;int drawflag0;struct skline b; } save;struct picsave {int lx;int ly;int wide;int h;int useflag;struct skline b; } a[28];void oripicdesk(int a,int h) {initgraph(a,h,EX_SHOWCONSOLE);setbkcolor(WHITE);cleardevice(); // 创制绘图界面背景色设置以背景色填充。setlinecolor(BLACK);setlinestyle(PS_SOLID,1); // 不含实线矩形的面积为8*8含实线9*9.rectangle(0,0,a-2,h-1);//确定工作界面范围setfillcolor(WHITE); }void oridrawdesksize(struct drawdesksize* ddm,int x,int y) {ddm-xx;ddm-yy;ddm-a640;ddm-h640;ddm-sizetile8;ddm-smxddm-x-ddm-a/ddm-sizetile;ddm-smyddm-y-ddm-h/ddm-sizetile; }void drawdesk(struct drawdesksize ddm) {int i,j;int squareddm.sizetile;for(iddm.x; iddm.xddm.a-square; isquare) {for(jddm.y; jddm.yddm.h; jsquare) {fillrectangle(i,j,isquare,jsquare);}}rectangle(ddm.smx-1,ddm.smy-1,ddm.x,ddm.y); }void oripircle(struct pircle *save,struct drawdesksize *ddm) {save-orilxddm-smx,save-orilyddm-smy;save-nowlxddm-smx,save-nowlyddm-smy;save-addm-a/ddm-sizetile;save-hddm-h/ddm-sizetile; // 原有图片的左上角坐标save-m1x0,save-m1y0;save-putflag0;save-drawflag0; }void oriset(IMAGE *set,struct drawdesksize ddm,int w,int h) {SetWorkingImage(set);setbkcolor(YELLOW);cleardevice();setlinecolor(BLACK);for(int i0; ih; iddm.a/ddm.sizetile) {for(int j0; jw; jddm.h/ddm.sizetile)rectangle(j1,i1,jddm.a/ddm.sizetile,iddm.h/ddm.sizetile);}line(0, 0, 800, 1400);SetWorkingImage(); } 这就是本篇文案解决的问题后产生的代码 可以和DevC easyx实现悬浮窗放入网格与在函数分离过程中遇到的BUG下理解 函数的作用时域 以及 初始化与复位的关系。-CSDN博客 与DevC easyx实现地图拖动超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客  对比看一看代码这就是视口编辑代码的族谱。  视口代码。maptile就是粘贴的瓦片set就是大地图其他函数参数是视口位置坐标自己换点数据试试自然而然。 show.h文件代码 extern struct skline nf,ndnf;extern IMAGE maptile;void didshow(IMAGE *set,IMAGE maptile,ExMessage m,int show_x,int show_y,int nowlx,int nowly) {static int flag0;static int oldx-8,oldy-8;int putx,puty;IMAGE olds(80,80);if(m.messageWM_LBUTTONDOWN) {SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);SetWorkingImage();} else{if(putxoldxputyoldy) {} else {if(m.messageWM_LBUTTONDOWN) {}printf(show %d %d\n,m.x,m.y);SetWorkingImage(set);putxnowlxm.x-show_x;putynowlym.y-show_y;putxputx-putx%80;putyputy-puty%80;putimage(putx,puty,maptile);oldxputx;oldyputy;SetWorkingImage();}} }void show(IMAGE *set,ExMessage m,int show_x,int show_y,int show_wideth,int show_height) { // 视口的图片大小视口的大小在窗口的坐标视口的大小static int nowlx,nowly,pic_wide,pic_heigh;static int m1x,m1y;static int drawflag,putflag,attachflag;static IMAGE olds(show_wideth,show_height);static IMAGE news(show_wideth,show_height);static int m2x,m2y; // 加速移动设置自动移动设置。static int flag1;if(flag1) {pic_wideshow_wideth;pic_heighshow_height;m1x0;m1y0;m2x0;m2y0;drawflag0;putflag0;attachflag0;flag0;setlinecolor(BLACK);rectangle(show_x,show_y,show_xshow_wideth,show_yshow_height);BeginBatchDraw();SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh);SetWorkingImage();putimage(show_x,show_y,olds);EndBatchDraw();} else {if(m.messageWM_LBUTTONDOWN) {if(m.ctrlm.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) {putflagtrue; // 启动批复制粘贴 // printf(%d\n,door.putflag);SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh); // 获取视口里的图片 //m1xm.x;m1ym.y;m2xm.x;m2ym.y; // printf(%d %d\n,m1x,m1y);SetWorkingImage();} else if (m.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) { // printf(333333\n);didshow(set,maptile,m,show_x,show_y,nowlx,nowly);attachflagtrue;}} else if(attachflagtruem.xshow_xm.xshow_xshow_widethm.yshow_ym.yshow_yshow_height) {didshow(set,maptile,m,show_x,show_y,nowlx,nowly);if(m.messageWM_LBUTTONUP) {attachflagfalse;}SetWorkingImage(set);getimage(olds,nowlx,nowly,pic_wide,pic_heigh);SetWorkingImage();putimage(show_x,show_y,olds);} else if(putflagtrue) {BeginBatchDraw();SetWorkingImage();SetWorkingImage(set);nowlxnowlx-5*(m.x-m1x);nowlynowly-5*(m.y-m1y); // 进行了位移放大。 // 位移同鼠标位移方向相反大小相同m1xm.x;m1ym.y;getimage(olds,nowlx,nowly,pic_wide,pic_heigh); // 获取新地方的底图为了下次重现不干扰下次获取临近底图。 // putimage(save-nowlx,save-nowly,save-img2);SetWorkingImage();putimage(show_x,show_y,olds); // putimage(500,500,save-img3);EndBatchDraw();// 一次绘图出来没有屏闪了if(m.messageWM_LBUTTONUP||m.ctrl0) {putflag0;}}}} draw.h文件代码 这是绘制瓦片纹理的像素绘图板的绘制矩形像素部分。 做了一点优化如果还是属于原来的方块就不执行绘制了。减少重复绘制。 extern IMAGE maptile;//用于设置绘图画布大小 //用于记录轨迹 void remem(struct ExMessage m,int *lenth,struct drawdesksize ddm) {int i*lenth;static int oldx-ddm.sizetile,oldy-ddm.sizetile,addm.sizetile,hddm.sizetile;if(m.xoldxm.xoldxam.yoldym.yoldyh) { //节约运算只在绘制时进行坐标变换} else {int px0,py0,qx0,qy0;int mapqx0,mapqy0;//修正可涂色范围,防止溢出。y不可等于640100x等于640600-1是边界小方块的最右侧像素pxm.x-ddm.x;pym.y-ddm.y;//修正600的偏移601600101%8 600600601-600%8qxpx-px%a;qypy-py%h;mapqxqx/a;mapqyqy/h;pxddm.xqx;pyddm.yqy;setfillcolor(BLACK);fillrectangle(px,py,pxddm.sizetile,pyddm.sizetile) ;nf.a[i].x mapqx;nf.a[i].y mapqy;i;*lenthi;nf.lenth*lenth;printf(%d %d %d\n,i-1,nf.a[i-1].x,nf.a[i-1].y);putpixel(ddm.smxnf.a[i-1].x,ddm.smynf.a[i-1].y,BLACK);oldxpx;oldypy;} }void draw(ExMessage m,int *lenth) { // 绘制的函数static int flag0;if(m.messageWM_LBUTTONDOWN) {remem(m,lenth,ddm); // printf(222\n);flag1;} else if(flag1) {remem(m,lenth,ddm);if(m.messageWM_LBUTTONUP) {flag0;}} }void drawmousecheck(ExMessage m,int *lenth,struct drawdesksize * ddm) {if(m.xddm-xm.xddm-xddm-am.yddm-ym.yddm-yddm-h) {draw(m,lenth); // printf(333\n);}}flowsave.h文件 绿色网格检测白色瓦片用于暂存。 void oriflowsave(int x,int y,int w,int h){setfillcolor(GREEN);int i;int num0;for(int j0; jh; j) {for(i1; iw; i) {a[num].lxx1i*81;a[num].lyy1j*81;a[num].wide80;a[num].h80;a[num].useflag0;fillrectangle(a[num].lx,a[num].ly,a[num].lxa[num].wide,a[num].lya[num].h);num;}} }void rehave(ExMessage m,int w,int h) {int i;int num0;for(int j0; jw; j) {for(i1; ih;i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag1) {ndnfa[num].b;break;}}num;}} }void pickpen(ExMessage m,int w,int h) {int i,j;int num0;for(j0; jw; j) {for(i1; ih; i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag1) {getimage(maptile,a[num].lx,a[num].ly,80,80);fillrectangle(20,80,100,160);putimage(20,80,maptile);}}num;}} }void flowsave(ExMessage m,struct pircle *save,int w,int h) {if(m.messageWM_LBUTTONDOWN) {pickpen(m,w,h);} else if(m.messageWM_LBUTTONUP) { // 单机直接粘贴bug但是可以作为长按的刷新接入其他地方int i;int num0;for(int j0; jw; j) {for(i1; ih; i) {if(m.xa[num].lxm.xa[num].lxa[num].widem.ya[num].lym.ya[num].lya[num].h) {if(a[num].useflag0) {a[num].bnf;if(save-nowlx!save-orilxsave-nowly!save-orily) {putimage(save-nowlx,save-nowly,save-img3);} else {getimage(save-img2,save-orilx,save-orily,save-a,save-h);}putimage(a[num].lx,a[num].ly,save-img2);save-nowlxsave-orilx;save-nowlysave-orily;save-m1x0;save-m1y0; // printf(%d\n,save-m1x);save-putflagfalse;a[num].useflag1;break;}}num;}}}if(m.messageWM_RBUTTONDOWN) {rehave(m,w,h);}} movecheck.h文件 就是DevC easyx实现图片拖动一种悬浮窗实现原理与完整代码-CSDN博客 extern int w2,h2;void movecheck(struct ExMessage m,struct pircle *save) {if(save-putflag0m.messageWM_LBUTTONDOWN) {if(save-m1x0save-m1y0m.xsave-orilxm.xsave-orilxsave-am.ysave-orilym.ysave-orilysave-h) {getimage(save-img2,save-orilx,save-orily,save-a,save-h);getimage(save-img3,save-orilx,save-orily,save-a,save-h);save-m1xm.x;save-m1ym.y;save-putflagtrue;printf(2222\n);} else if(m.xsave-nowlxm.xsave-nowlxsave-am.ysave-nowlym.ysave-nowlysave-h) {save-putflagtrue;getimage(save-img2,save-orilx,save-orily,save-a,save-h);save-m1xm.x;save-m1ym.y; // printf(11111\n);}} else if(save-putflagtrue) {BeginBatchDraw();putimage(save-nowlx,save-nowly,save-img3);save-nowlxsave-nowlxm.x-save-m1x;save-nowlysave-nowlym.y-save-m1y;save-m1xm.x;save-m1ym.y;getimage(save-img3,save-nowlx,save-nowly,save-a,save-h);putimage(save-nowlx,save-nowly,save-img2);EndBatchDraw();if(m.messageWM_LBUTTONUP) {save-putflag0;} // 一次绘图出来没有屏闪了}}void buttonscheck(ExMessage m,struct pircle *save) {static int flag0;if(flag0) {rectangle(20,20,60,40);flowsave(m,save,w2,h2);flag1;}movecheck(m,save);flowsave(m,save,w2,h2);} keycheck.h文件 这个是按键实现保存清屏处理。 这也是软件快捷键的执行的代码。 extern IMAGE set;//重置绘图版功能 void ori(struct drawdesksize ddm) {int i,j;int squareddm.sizetile;setfillcolor(WHITE);setlinecolor(GREEN);for(iddm.x; iddm.xddm.a-square; isquare) {for(jddm.y; jddm.yddm.h; jsquare) {fillrectangle(i,j,isquare,jsquare);}}for(iddm.smx; iddm.smxddm.a/ddm.sizetile; i) {for(jddm.smy; jddm.smyddm.h/ddm.sizetile; j) {putpixel(i,j,WHITE);}} // rectangle(ddm.smx-1,ddm.y-1,ddm.x,ddm.y);}void pixnf(int lenth,struct drawdesksize ddm) { // 小地图打印int i0;for(i0; ilenth; i) {putpixel(ddm.smxnf.a[i].x,ddm.smynf.a[i].y,WHITE);if(i%550)Sleep(1);}for(i0; ilenth; i) {putpixel(ddm.smxnf.a[i].x,ddm.smynf.a[i].y,BLACK);if(i%550)Sleep(1);} }void keycheck(ExMessage m,int *lenth) {switch(m.vkcode) {case VK_F1:ori(ddm);*lenth0; // 优化清屏后叠加在小地图bugbreak;case VK_F2 :saveimage(_T(gamemap.png),set);break;case VK_F5 :static int limf50;if(limf50) {pixnf(*lenth,ddm);limf51;break;} else {limf50;} // 限制一次按动一次调用因为获取getmessage函数有连续两次探测。break;}}
http://www.sczhlp.com/news/187694/

相关文章:

  • 怎么让网站收录在google百度竞价广告点击器
  • 工作室做网站安卓盒子做网站
  • iis 网站无法访问vs2013做网站
  • 做导购网站有哪些做网站服装app
  • 郑州专业网站推广优化公司山西建站
  • 稀奇古怪好玩有用的网站丹东网站建设公司
  • app开发网站建设培训班网站的运行与维护
  • 用php做的网站论文2019建设什么网站好运营
  • 使用php做网站扬州注册公司
  • 济宁网页谷歌优化排名哪家强
  • 上海网站建设 推荐站霸网络企业网站营销的实现方式解读
  • 北京旅游型网站建设深圳福田网站优化网络营销培训学校
  • 邢台网站制作地址百度识图在线网页版
  • 网站服务器是什么渭南韩城
  • 方城网站制作写软文的平台有哪些
  • 全屏响应式网站cms企业网站源码
  • 有关师德建设的网站wordpress通知评论者
  • 微科技h5制作网站模板找网站建设公司好
  • html学校网站模板网站地址免费
  • 影视制作做的好的有什么网站网站编辑面试问题和答案
  • 股票推荐怎么做网站淘宝网站网页图片怎么做的
  • 柳州正规网站制作网站地址大全
  • 网站哪个公司做的比较好的王野天 葛优
  • 做app必须有网站吗2008 iis7添加网站
  • 做网站开发的电话销售话术三亚西岛
  • c 做注册网站制作微信的网站有哪些
  • 做外贸网站费用承德建设网站公司
  • 住房和建设部网站首页网站建设中的风险风险
  • 网站的上一页怎么做的温州服务网站建设
  • 鞍山网站设计公司wordpress禁止自动跳转