函数纹理(国际象棋棋盘纹理&粗布纹理)MFC实现  源码百度云下载

  1. 国际象棋棋盘纹理(效果图见最后)
  1. //国际象棋纹理函数
  2. //g(u, v) = a , 向下取整(8u)+向下取整(8v) 为 偶数
  3. //g(u, v) = b ,向下取整(8u)+向下取整(8v) 为 奇数
  4. void CChessGiagView::DrawChess(double a, double b, double step)
  5. {
  6. CDC * pDC = GetDC();
  7. //自定义二维坐标系
  8. CRect rect;
  9. GetClientRect(&rect);
  10. pDC->SetMapMode(MM_ANISOTROPIC);
  11. pDC->SetWindowExt(rect.Width(), rect.Height());
  12. pDC->SetViewportExt(rect.Width(), -rect.Height());
  13. pDC->SetViewportOrg(rect.Width()/, rect.Height()/);
  14. rect.OffsetRect(-rect.Width()/, -rect.Height()/);
  15. pDC->TextOut(-, , "国际象棋棋盘纹理");
  16.  
  17. double u, v;
  18. for(u=; u<=1.0; u+=step)
  19. {
  20. for(v=; v <= 1.0; v+=step)
  21. {
  22. if((int(floor(u*)) + int(floor(v*))) % == )//偶数颜色a
  23. {
  24. pDC->SetPixelV(Round(u*-), Round(v*-), RGB(a*, a*, a*));//u系数修改大小,减数调节显示位置
  25. }
  26. else//奇数颜色b
  27. {
  28. pDC->SetPixelV(Round(u*-), Round(v*-), RGB(b*, b*, b*));//u系数修改大小,减数调节显示位置
  29. }
  30. }
  31. }
  32. //输出相关参数
  33. CString str_a, str_b;
  34. str_a.Format("%.1f", a);
  35. str_b.Format("%.1f", b);
  36. pDC->TextOut(-, -, "a="+ str_a+", b="+str_b);
  37. }

  2. 粗布纹理 (效果图见最后) 

  1. //粗布纹理函数: f(u, v) = A((cos(pu) + cos(qv)))
  2. //u, v=[0, 1]; A=[0, 1]随机变量; p, q频率系数
  3. void CChessGiagView::DrawCloth(int p, int q)
  4. {
  5. CDC * pDC = GetDC();
  6. //自定义二维坐标系
  7. CRect rect;
  8. GetClientRect(&rect);
  9. pDC->SetMapMode(MM_ANISOTROPIC);
  10. pDC->SetWindowExt(rect.Width(), rect.Height());
  11. pDC->SetViewportExt(rect.Width(), -rect.Height());
  12. pDC->SetViewportOrg(rect.Width()/, rect.Height()/);
  13. rect.OffsetRect(-rect.Width()/, -rect.Height()/);
  14. pDC->TextOut(, , "粗布纹理");
  15.  
  16. double u, v;
  17. for(u=; u<=; u+=0.001)
  18. {
  19. for(v=; v<=1.0; v+=0.001)
  20. {
  21. double A = double(rand())/RAND_MAX; // A=[0, 1]
  22. double f = A*((cos(p*u) + (cos(q*v)))); //颜色
  23. pDC->SetPixelV(Round(u* + ), Round(v*-), RGB(f*, f*, f*));
  24. }
  25. }
  26. //输出相关参数
  27. CString str_p, str_q;
  28. str_p.Format("%d", p);
  29. str_q.Format("%d", q);
  30. pDC->TextOut(, -, "p="+ str_p+", q="+str_q);
  31. }

  3. 效果

  4. 补充说明:如果需要调节图像的颜色(示例仅为灰度图像), 那么就将RGB 的一个分量置为固定值,比如要红色的图像,就将R=255.

VC++ 6.0 编译通过,VC++ 永不过时!

函数纹理(国际象棋棋盘纹理&粗布纹理)MFC的更多相关文章

  1. python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码

    参考博客:https://blog.csdn.net/xue_wenyuan/article/details/51533953 https://blog.csdn.net/jinshengtao/ar ...

  2. GUI(国际象棋棋盘)

    package com.niit.javagui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridB ...

  3. python3 turtle 画国际象棋棋盘

    python3 turtle 画国际象棋棋盘 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan import turt ...

  4. Python算法题(二)——国际象棋棋盘(排列组合问题,最小的K个数)

    题目一(输出国际象棋棋盘)  分析: 用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格.   主要代码: for i in range(8): for j in range(8 ...

  5. 国际象棋棋盘输出-PHP代码

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. python绘制国际象棋棋盘核心代码

    import turtle step = 40 for i in range(8): for j in range(8): turtle.penup() turtle.goto(i*step, j*s ...

  7. 使用turtle库画国际象棋棋盘

    import turtle n = 60 # 每行间隔,小格子边长 x = -300 # x初始值 y = -300 # x初始值 def main(): turtle.speed(11) turtl ...

  8. OpenGL ES 详解纹理生成和纹理映射步骤以及函数

    通常一个纹理映射的步骤是: 创建纹理对象.就是获得一个新的纹理句柄 ID. 指定纹理.就是将数据赋值给 ID 的纹理对象,在这一步,图像数据正式加载到了 ID 的纹理对象中. 设定过滤器.定义了ope ...

  9. Unity Shader入门精要学习笔记 - 第7章 基础纹理

    转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色. 在美术 ...

随机推荐

  1. 【python】版本35 正则-非库-爬虫-读写xlw文件

    #交代:代码凌乱,新手一个,论坛都是高手,我也是鼓了很大勇气,发出来就是被批评和进步的   #需求:需要对某网站的某id子标签批量爬取,每个网页的id在xlw里,爬取完,再批量存取到这xlw里的第6行 ...

  2. win32程序之窗口程序,以及消息机制

    win32程序值窗口程序,以及消息机制 一丶简介 通过上一讲.我们了解了窗口其实是绘制出来的.而且是不断绘制的过程. 所以窗口的本质是绘制. 但是我们现在看到的窗口程序.都可以点击关闭按钮. 使用鼠标 ...

  3. 【转载】uCOS系统的思考

    一:  世界潮流,浩浩汤汤,顺之者昌,逆之者亡---孙中山 从80X86到ARM9,再从ARM9到ARM7,平台是越做越简单,但是简单并不是意味着退步,反而是种潮流趋势... 在CISC道路上渐行渐远 ...

  4. Android Navigation 架构组件入门教程

    Android Navigation 架构组件入门教程 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:https://www.cnblogs.com/cavalier-/p/1 ...

  5. python语法风格

    这里只给出其它文章里不适合出现部分语法风格. python有几种类型的复合语句:if.for.while.def.class.try/except.with/as等.这些复合类型的语句在编写时,要遵循 ...

  6. 翻译:如何向MariaDB中快速插入数据(已提交到MariaDB官方手册)

    本文为mariadb官方手册:How to Quickly Insert Data Into MariaDB的译文. 原文:https://mariadb.com/kb/en/how-to-quick ...

  7. C# 实现Jwtbearer Authentication

    Jwtbearer Authentication 什么是JWT JWT(JSON Web Token), 顾名思义就是在Web上以JSON格式传输的Token(RFC 7519). 该Token被设计 ...

  8. [android] 隐式意图激活另外一个activity

    随着api的升级,系统的很多应用包名和类名都改掉了,所以很多时候,打开系统应用的时候会报错,隐式意图就是解决组件之间松耦合,描述动作行为 获取Intent对象,通过new出来 调用Intent对象的s ...

  9. 【Spring】使用Spring发送邮件

    Spring Email抽象的核心是MailSender接口,MailSender的实现能够通过连接Email服务器实现邮件发送的功能,如下图: Spring自带一个MailSender的实现就是Ja ...

  10. Maven(七)Eclipse使用Maven命令

    由于没有mvn compile (其余命令类似) 可以点解上面框中选项手动输入compile