函数纹理(国际象棋棋盘纹理&粗布纹理)MFC
函数纹理(国际象棋棋盘纹理&粗布纹理)MFC实现 源码百度云下载
- 国际象棋棋盘纹理(效果图见最后)
//国际象棋纹理函数
//g(u, v) = a , 向下取整(8u)+向下取整(8v) 为 偶数
//g(u, v) = b ,向下取整(8u)+向下取整(8v) 为 奇数
void CChessGiagView::DrawChess(double a, double b, double step)
{
CDC * pDC = GetDC();
//自定义二维坐标系
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/, rect.Height()/);
rect.OffsetRect(-rect.Width()/, -rect.Height()/);
pDC->TextOut(-, , "国际象棋棋盘纹理"); double u, v;
for(u=; u<=1.0; u+=step)
{
for(v=; v <= 1.0; v+=step)
{
if((int(floor(u*)) + int(floor(v*))) % == )//偶数颜色a
{
pDC->SetPixelV(Round(u*-), Round(v*-), RGB(a*, a*, a*));//u系数修改大小,减数调节显示位置
}
else//奇数颜色b
{
pDC->SetPixelV(Round(u*-), Round(v*-), RGB(b*, b*, b*));//u系数修改大小,减数调节显示位置
}
}
}
//输出相关参数
CString str_a, str_b;
str_a.Format("%.1f", a);
str_b.Format("%.1f", b);
pDC->TextOut(-, -, "a="+ str_a+", b="+str_b);
}
2. 粗布纹理 (效果图见最后)
//粗布纹理函数: f(u, v) = A((cos(pu) + cos(qv)))
//u, v=[0, 1]; A=[0, 1]随机变量; p, q频率系数
void CChessGiagView::DrawCloth(int p, int q)
{
CDC * pDC = GetDC();
//自定义二维坐标系
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/, rect.Height()/);
rect.OffsetRect(-rect.Width()/, -rect.Height()/);
pDC->TextOut(, , "粗布纹理"); double u, v;
for(u=; u<=; u+=0.001)
{
for(v=; v<=1.0; v+=0.001)
{
double A = double(rand())/RAND_MAX; // A=[0, 1]
double f = A*((cos(p*u) + (cos(q*v)))); //颜色
pDC->SetPixelV(Round(u* + ), Round(v*-), RGB(f*, f*, f*));
}
}
//输出相关参数
CString str_p, str_q;
str_p.Format("%d", p);
str_q.Format("%d", q);
pDC->TextOut(, -, "p="+ str_p+", q="+str_q);
}
3. 效果

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

VC++ 6.0 编译通过,VC++ 永不过时!
函数纹理(国际象棋棋盘纹理&粗布纹理)MFC的更多相关文章
- python实现gabor滤波器提取纹理特征 提取指静脉纹理特征 指静脉切割代码
参考博客:https://blog.csdn.net/xue_wenyuan/article/details/51533953 https://blog.csdn.net/jinshengtao/ar ...
- GUI(国际象棋棋盘)
package com.niit.javagui; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridB ...
- python3 turtle 画国际象棋棋盘
python3 turtle 画国际象棋棋盘 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan import turt ...
- Python算法题(二)——国际象棋棋盘(排列组合问题,最小的K个数)
题目一(输出国际象棋棋盘) 分析: 用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格. 主要代码: for i in range(8): for j in range(8 ...
- 国际象棋棋盘输出-PHP代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- python绘制国际象棋棋盘核心代码
import turtle step = 40 for i in range(8): for j in range(8): turtle.penup() turtle.goto(i*step, j*s ...
- 使用turtle库画国际象棋棋盘
import turtle n = 60 # 每行间隔,小格子边长 x = -300 # x初始值 y = -300 # x初始值 def main(): turtle.speed(11) turtl ...
- OpenGL ES 详解纹理生成和纹理映射步骤以及函数
通常一个纹理映射的步骤是: 创建纹理对象.就是获得一个新的纹理句柄 ID. 指定纹理.就是将数据赋值给 ID 的纹理对象,在这一步,图像数据正式加载到了 ID 的纹理对象中. 设定过滤器.定义了ope ...
- Unity Shader入门精要学习笔记 - 第7章 基础纹理
转自 冯乐乐的 <Unity Shader 入门精要> 纹理最初的目的就是使用一张图片来控制模型的外观.使用纹理映射技术,我们可以把一张图“黏”在模型表面,逐纹素地控制模型的颜色. 在美术 ...
随机推荐
- Spring实战拆书--SpringBean
代码源码地址:https://github.com/wujiachengSH/springBeanDemo 概述:本章将讲解Spring对于Bean的管理方案. 目录: 准备工作 自动装配 处理装配歧 ...
- logstash常用插件解析
官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html 配置文件写法: # 日志导入inp ...
- Microsoft 机器学习产品体系对比和介绍
Microsoft 提供多种多样的产品选项用于生成.部署和管理机器学习模型. 本文将比较这些产品,并帮助你选择所需的产品,以便最有效地开发机器学习解决方案. 机器学习产品 描述 作用 Azure云端服 ...
- github提交代码contributions不显示小绿块
问题描述: 最近发现一个问题就是不管是提交新增的代码还是修改后提交的代码在github的contributions上都不显示贡献小绿块. 于是我在 github help 里面找到了答案: 官方链接如 ...
- python 闯关之路四(下)(并发编程与数据库编程)
并发编程重点: 并发编程:线程.进程.队列.IO多路模型 操作系统工作原理介绍.线程.进程演化史.特点.区别.互斥锁.信号. 事件.join.GIL.进程间通信.管道.队列. 生产者消息者模型.异步模 ...
- 【原创】使用golang访问windows telnet服务器
本篇博客记录本次使用golang语言tcp方式进行telnet服务器访问 环境: 1.win7系统telnet服务器,使用地址:192.168.8.189 2.python使用telnetlib库对t ...
- 【SQL跟踪工具】SQL Profiler 跟踪器
什么是SQL Profiler SQL Server Profiler 是一个功能丰富的界面,用于创建和管理跟踪并分析和重播跟踪结果. 事件保存在一个跟踪文件中,稍后试图诊断问题时,可以对该文件进行分 ...
- mac os下vscode快捷键
全局 Command + Shift + P / F1 显示命令面板 Command + P 快速打开 Command + Shift + N 打开新窗口 Command + W 关闭窗口 基本 Co ...
- 华为交换机以 LACP 模式实现链路聚合
LACP 链路聚合模式简介 以太网链路聚合是指将多条以太网物理链路捆绑在一起成为一条逻辑链路,从而实现增加链路带宽的目的.链路聚合分为手工模式和LACP模式. LACP模式需要有链路聚合控制协议LAC ...
- MySQL系列详解七:MySQL双主架构演示-技术流ken
前言 在企业中,数据库高可用一直是企业的重中之重,中小企业很多都是使用mysql主从方案,一主多从,读写分离等,但是单主存在单点故障,从库切换成主库需要作改动.因此,如果是双主或者多主,就会增加mys ...