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

宝安区建设网站简约大气网站模板

宝安区建设网站,简约大气网站模板,深圳seo教程,网站策划运营方案继上篇文案#xff0c; DevC easyx实现地图拖动#xff0c;超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动#xff0c;但是当时野心不止#xff0c;就想着一气能搓啥就继续搓啥#xff0c;看着地图移动都搓…继上篇文案 DevC easyx实现地图拖动超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 实现了大地图拖动但是当时野心不止就想着一气能搓啥就继续搓啥看着地图移动都搓出来了像素点也画上了能不能就着直接编辑地图给超过屏幕大小的地图画画。 上节文案从拖动复制粘贴实现悬浮窗通过img3进行缓存覆盖前的位置的样子在下次粘贴之前先用img3粘贴到原来位置恢复在重新采样给img3然后粘贴img2.两种图片的复制粘贴。 一个是恢复图片的复制粘贴一个是图像的不断粘贴念着念着就自然而然看到了大地图复制粘贴不就能实现大地图的修改了吗 于是这样才继续就着复制粘贴的思路小地图绘制完贴回到大地图去然后再从大地图复制再粘贴回来就刚刚好。 其实代码就是之前的DevC easyx实现地图拖动超过屏幕大小的巨大地图的局部显示在屏幕的方法——用悬浮窗的原理来的实现一个视口-CSDN博客 的最后一个代码块 而且就是这上一篇文案的刮刮乐效果的bug原理也是这个bug根源在于函数参数 void check(struct ExMessage m,struct pircle *save,IMAGE ak,struct showplace *show)  IMAG  ak的参数 IMAG ak指的是ak图片调用之后图片会自动备份相当于复制了一个原件不受影响。 这个用法就是所谓的形参只是说明用的是数据来源备份。数据来源不受更改。 这样原来的大地图就压根没有被修改。 但是刮刮乐效果呢打印了ak图像去对比像素然后按下去鼠标不松发现ak上没有打印图像松开鼠标才有轨迹粘贴进去试了试几次发现总是视口的图片粘贴到ak上面。想起来之前实现复制粘贴肯定不能原样复制不然画面不会动就没有拖动效果。这样肯定采样的位置变化了假设新旧采样位置都之差一个像素的宽度。然后假设一个像素复制粘贴有位置差距然后描述一遍是取样的时候先取样ak平面上偏移一个像素的位置粘贴到视口上然后重新调用ak这样ak是一个全是蓝色背景的然后又把视口的图片粘贴到ak上这样总是有新的备份产生总是在新的备份中切除一个像素然后切除剩下的像素重新粘贴到新的备份当中。就出现了。 原来是采样才是真正实现刮刮乐的效果的原因采样总是会多出来一个像素的蓝色边这样视口里相应就是蓝色像素覆盖边缘的黄色像素。然后把这个多出来蓝色像素的图片粘到原来位置这样就无中生有了新的蓝色像素实现刮刮乐效果。 鼠标左键点击不移动鼠标不会打印但是只要松开才会打印。显然这样就是从视口复制粘贴到底图那样bug就来自从底图到视口的这仅有的两个可能范围里的这唯一一种情况了。 bug或刮刮乐效果代码其实就是传入的是ak图片的备份。ak永远都是蓝色。 #includestdio.h #includeconio.h #includegraphics.h #includewindows.h struct pircle {IMAGE img2;IMAGE img3;const int orilx0,orily0;int nowlx0,nowly0;const int a300,h300; // 原有图片的左上角坐标int m1x0,m1y0;int putflag0;int drawflag0;} save;struct showplace {int x100;int y100;const int a300;const int h300;} show; void gameplace(IMAGE *ak) {SetWorkingImage(ak);setbkcolor(BLUE);cleardevice();setlinecolor(BLACK);rectangle(0,0,1499,1499);line(0, 0, 800, 1400);}void check(struct ExMessage m,struct pircle *save,IMAGE ak,struct showplace *show) {printf(putflag %d\n,save-putflag);printf(%d %d\n,m.x,m.y);printf(%d %d\n,save-nowlx,save-nowly);if(save-putflagtrue) {SetWorkingImage();getimage(save-img3,show-x,show-y,show-a,show-h);BeginBatchDraw();SetWorkingImage(ak);putimage(save-nowlx,save-nowly,save-img3);save-nowlxsave-nowlx-(m.x-save-m1x);save-nowlysave-nowly-(m.y-save-m1y);save-m1xm.x;save-m1ym.y;getimage(save-img2,save-nowlx,save-nowly,save-a,save-h);// putimage(save-nowlx,save-nowly,save-img2);SetWorkingImage();putimage(show-x,show-y,save-img2);putimage(500,500,ak) ;// 在默认桌面程序的界面上打印ak底图效果 EndBatchDraw();// 一次绘图出来没有屏闪了}switch(m.message) {case WM_LBUTTONDOWN:if(m.xshow-xm.xshow-xshow-am.yshow-ym.yshow-yshow-hm.ctrl) {save-putflagtrue; // 启动批复制粘贴SetWorkingImage(ak);getimage(save-img2,save-nowlx,save-nowly,save-a,save-h); // save-img2ak;save-m1xm.x;save-m1ym.y;SetWorkingImage();}break;case WM_LBUTTONUP:save-putflag0;break;}}void draw(struct ExMessage m,struct pircle *save,struct showplace *show,IMAGE *ak) {// printf(draw %d\n,save-drawflag); // SetWorkingImage(ak);if(save-drawflagtrue) { // save.drawflag1;putpixel(m.x,m.y,RGB(255,155,4));}switch(m.message) {case WM_LBUTTONDOWN:if(m.xshow-xm.xshow-xshow-am.yshow-ym.yshow-yshow-h) { //printf(m.x %d\tm.y %d\t%d\t%d\n,m.x,m.y,save-m1x,save-m1y);save-drawflagtrue;// printf(drawflag %d\n,save-drawflag);}break;case WM_LBUTTONUP:save-drawflagfalse; // printf(%d\n,save-drawflag);break;}}int main() {// 初始化绘图窗口initgraph(1640, 1480);IMAGE ak(1500,1500);IMAGE b(300,300);gameplace(ak);getimage(b,0,0,300,300);SetWorkingImage();putimage(0,0,ak);putimage(100,100,b);setlinecolor(BLACK);rectangle(show.x,show.y,show.xshow.a,show.yshow.h);ExMessage m;while(1) {mgetmessage(EX_MOUSE);check(m,save,ak,show);draw(m,save,show,ak);}_getch();closegraph(); }代码对应序号15.5解决画不上去....文件里的代码 ctrl鼠标左键视口实现拖动 可以看到另一部分也有个相同的图片这个右下角的图片就是img3的内容。相当于除了复制粘贴原来地方还在500,500的位置再次复制粘贴图像。 对比代码蓝色的参数可以知道传入的ak多了一个符号*实现了ak的操作而不再是ak复印件的操作。 当然由于ak图片大小太大实际上传入的*ak是ak的引用凭证这样通过引用凭证到ak所实际存储的地方。而原来的ak的样本实际上就是通过直接复制ak的数据。 检测方法也好说其实就是把ak图片的大小改大大概10000*10000像素应该就有100mb了这样在运行两个代码看看是不是一个比另一个1多出100mb的内存。然后再改改图片大小20000*1000020000*20000看看是不是对应又多了一倍还多了一倍。 然后就是改参数属性从IMAG ak 到IMAG *ak的故事了。 直接替换完事。 完整代码解决刮刮乐效果而且成功绘制到原来的ak图片上了。 #includestdio.h #includeconio.h #includegraphics.h #includewindows.h struct pircle {IMAGE img2; // old IMAGE img3;const int orilx0,orily0;int nowlx0,nowly0;const int a400,h400; // 原有图片的左上角坐标int m1x0,m1y0;int putflag0;int drawflag0;} save;struct showplace {int x100;int y100;const int a400;const int h400; } show;void gameplace(IMAGE *ak) {SetWorkingImage(ak);setbkcolor(BLUE);cleardevice();setlinecolor(BLACK);rectangle(0,0,1499,1499);line(0, 0, 800, 1400);}void check(struct ExMessage m,struct pircle *save,IMAGE *ak,struct showplace *show) {printf(putflag %d\n,save-putflag);printf(%d %d\n,m.x,m.y);printf(%d %d\n,save-nowlx,save-nowly);if(save-putflagtrue) {BeginBatchDraw();SetWorkingImage();getimage(save-img3,show-x,show-y,show-a,show-h);SetWorkingImage(ak); // SetWorkingImage(ak);putimage(save-nowlx,save-nowly,save-img3);save-nowlxsave-nowlx-(m.x-save-m1x);save-nowlysave-nowly-(m.y-save-m1y);save-m1xm.x;save-m1ym.y;getimage(save-img2,save-nowlx,save-nowly,save-a,save-h);// putimage(save-nowlx,save-nowly,save-img2);SetWorkingImage();putimage(show-x,show-y,save-img2);putimage(500,500,save-img3);EndBatchDraw();// 一次绘图出来没有屏闪了}switch(m.message) {case WM_LBUTTONDOWN:if(m.xshow-xm.xshow-xshow-am.yshow-ym.yshow-yshow-hm.ctrl) {save-putflagtrue; // 启动批复制粘贴SetWorkingImage(ak);getimage(save-img2,save-nowlx,save-nowly,save-a,save-h); // save-img2ak;save-m1xm.x;save-m1ym.y;SetWorkingImage();}break;case WM_LBUTTONUP:save-putflag0;break;}}void draw(struct ExMessage m,struct pircle *save,struct showplace *show,IMAGE *ak) {// printf(draw %d\n,save-drawflag); // SetWorkingImage(ak);if(save-drawflagtrue) { // save.drawflag1;putpixel(m.x,m.y,RGB(255,155,4));}switch(m.message) {case WM_LBUTTONDOWN:if(m.xshow-xm.xshow-xshow-am.yshow-ym.yshow-yshow-h) { //printf(m.x %d\tm.y %d\t%d\t%d\n,m.x,m.y,save-m1x,save-m1y);save-drawflagtrue;// printf(drawflag %d\n,save-drawflag);}break;case WM_LBUTTONUP:save-drawflagfalse; // printf(%d\n,save-drawflag);break;}}int main() {// 初始化绘图窗口initgraph(840, 880);IMAGE ak(1500,1500);IMAGE b(300,300);gameplace(ak);getimage(b,0,0,400,400);SetWorkingImage();putimage(0,0,ak);putimage(100,100,b);setlinecolor(BLACK);rectangle(show.x,show.y,show.xshow.a,show.yshow.h);ExMessage m;while(1) {mgetmessage(EX_MOUSE);check(m,save,ak,show);draw(m,save,show,ak);}_getch();closegraph(); }
http://www.zqtcl.cn/news/841493/

相关文章:

  • cms 做网站用模板网站做h5宣传页多少钱
  • 坪山网站建设行业现状官方建网站有哪些步骤
  • 软件下载网站模版单页网站开发实例下载
  • 张家口网站建设vewanseo实战技术培训
  • 机加工网站室内设计联盟论坛
  • 汕头装修接单网站wordpress php加密
  • 重庆网站建设推广设置wordpress静态主页
  • 科技设计公司网站模板下载网站建设计划 文库
  • 建设美食网站做的好的阅读类的网站有哪些
  • 全屏网站模板制作教程吴江建设局房产网站
  • 浠水网站建设漳州找人做网站要求哪些
  • 做网站需要前台和后台吗公众号制作要求
  • 做一个网站 如何盈利模式招聘网站排行榜2021
  • 免费做网站网站有人哪些c 网站开发网易云课堂百度云下载
  • 高端品牌网站设计欣赏扬中网站建设包括哪些
  • 手机怎么访问微网站网络运营商电话
  • 怎么成立网站战争局势最新消息
  • 嘉定网站设计制作报价crm系统营销
  • 一个网站做几个关键词怎么样子做网站
  • 关于做网站的创新创业策划书怎么进网站后台管理系统
  • 品牌型网站开发wap网站开发工具
  • 网站改版设计微信淘宝购物券网站是怎么做的
  • 网站建设基本流程心得网站设计开发报价
  • 泉州网站建设网站制作电商网站建设需要
  • 沈阳工程建设信息网深圳seo网站排名优化
  • wordpress仿dz长沙seo网站优化
  • 西宁做网站公司电话关键词快速排名怎么做
  • 昆山网站建设秦皇岛淘宝关键词推广
  • 建设娱乐网站的要求微网站开发多少钱
  • 海港区网站快排seo网站怎么添加流量