VC++图形程序设计基础
计算机图形学实验指导书(vc++版)

实验指导书刘文涛2013目录第一章图形学实验环境和要求 (4)1.1 VC++实验环境 (4)1.1.1 基本环境 (4)1.1.1 开发图形程序的一般流程 (7)1.1.3 基本绘图函数介绍 (11)1.2 OpenGL (22)1.2.1 OpenGL介绍 (22)1.2.2 OpenGL开发环境 (24)1.2.3 OpenGL函数 (24)1.2.4 回调函数 (25)1.2.4 一个典型OpenGL例程 (26)1.3 实验要求 (29)1.3.1 实验内容 (29)1.3.2 实验方法 (29)1.3.3 实验效果 (30)第二章直线生成算法 (30)2.1 实验原理 (30)2.1.1 DDA算法 (30)2.1.2 Bresenham算法 (30)2.2 实验内容 (30)2.3 参考示例程序 (30)第三章圆和椭圆生成算法 (32)3.1 实验原理 (32)3.2 实验内容 (32)3.3 参考示例程序1 (32)3.4 参考示例程序2 (33)第四章裁剪算法 (35)4.1 实验原理 (35)4.2 实验内容 (35)4.3 示例程序 (35)4.3.1 参考例子1 (35)4.3.2参考例子2 (38)第五章二维变换 (40)5.1 实验原理 (40)5.2 实验内容 (40)5.3 示例程序 (40)5.3.1参考例子1 (40)第六章三维变换 (44)6.1 实验原理: (44)6.2 实验内容 (45)6.3示例程序 (45)第七章填充算法 (47)7.1 实验原理: (47)7.2 实验内容 (47)7.3示例程序 (47)第八章曲线曲面 (50)8.1 实验原理 (50)8.2 实验内容 (50)8.3示例程序 (51)8.3.1 参考例子(1) (51)8.3.2 参考例子(2) (52)8.3.3 参考例子(3) (54)8.3.4 参考例子(4) (56)第九章真实感图形绘制 (59)9.1 实验原理 (59)9.2 实验内容 (59)9.3示例程序 (59)9.3.1参考例子(1) (59)9.3.2参考例子(2) (61)9.3.3参考例子(3) (63)第十章动画 (66)10.1 实验原理 (66)10.2 实验内容 (66)10.3示例程序 (66)10.3.1 参考例子 (66)参考文献: (72)第一章图形学实验基础1.1 VC++实验环境1.1.1 基本环境Microsoft Visual C++ 6.0 是微软推出的功能强大的可视化C/C++语言编译器,运行在Windows 9x/2000/NT等平台上,可以建立32位应用程序。
Visual_C++_MFC_绘图

设备中绘图时,需要访问该设备的 DC。MFC 将 GDI 的 DC 封装在 C++类中,包括 CDC 类 和 CDC 派生类,这些类中的许多成员都是对本地 GDI 绘图函数进行简单封装而形成的内联 函数。
DC 的作用就是提供程序与物理设备或者虚拟设备之间的联系,除此之外,DC 还要处
理绘图属性的设置,如文本的颜色等。程序员可以通过调用专门的 GDI 函数修改绘图属性, 如 SetTextColor()函数。
第一个问题是建立什么类型的应用程序,有三个选项:单个文档(Single document)、 多重文档(Multiple document)和基本对话(Dialog based)。单个文档应用程序主窗口中只 有一个窗口,多重文档可以在主窗口中开多个子窗口,基本对话主窗口是一个对话框。例中 选择单个文档,单击“确定”, 如图 3-4 所示 ,进入下一个问题,。
图 3-3 第一个问题:选择应用程序的类型
图 3-4 第二个问题:选择是否要用 ODBC 支持
第三个问题是对 ActiveX 的支持。有五个选项:(1)没有对 ActiveX 的支持;(2)ActiveX 容器,它可以包含链接和嵌入对象。容器不能为其它的 ActiveX 程序提供支持,它只能维护 嵌入对象;(3)微型服务器(Mini-server),应用程序不能独立运行,只能被调用为其它程 序建立 ActiveX 对象。(4)完整服务器(Full-server),它能够独立运行,并能够为其它应用 程序建立 ActiveX 对象。(5)容器和服务器,一个应用程序可以同时是容器和服务器。
3.2.2 绘制基本图形
(1)画点 SetPixel()函数可以在指定的坐标位置按指定的颜色画点。函数原型说明如下:
计算机图形学记得体会

计算机图形学的心得体会计算机图形学是20世纪60年代以后,随着计算机技术(包括计算机硬件技术和软件技术)的发展和完善而形成的一门新兴学科。
至今,计算机图形学已在建筑,机械,电子,造船,航空,汽车,轻工,广告,艺术等领域得到了广泛的应用。
可以说,它几乎影响了所有涉及领域,冲击和改变着传统的设计模式。
一打开计算机,人们首先接触到的就是计算机图形学的内容,因为计算机的用户界面已广泛使用了计算机图形技术。
事实上,计算机图形技术已深入到各个领域。
计算机图形的生成一般包括两种方法:程序绘图和交互绘图。
所谓程序绘图,就是先用计算机语言(例如C语言)编好绘图程序,然后运行该程序并绘出图形。
而交互绘图则是应用交互式图形软件,通过交互命令(键盘命令,菜单命令等)由计算机生成图形。
程序绘图是交互式绘图的基础。
简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。
图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。
从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。
计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。
为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。
所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。
事实上,图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。
同时,真实感图形计算的结果是以数字图像的方式提供的,计算机图形学也就和图像处理有着密切的关系。
这学期我们主要学习了MFC图形编程,学习了《 VC++图形程序设计基础》。
从中学习了如何建立MFC项目和简单的输入与输出。
三视图即主视图、俯视图、侧视图是分别将三维立体对正面、水平面和侧面作正投影得到的三个基本视图。
C程序设计基础-PPT课件

2.1 常量和变量
注意符:号常量在其作用域内不能再赋值。
符号常量的好处:(1)含义清楚。(2)需改变时,“一改全改”。
2024/10/14
1
2.1 常量和变量
注意:
1、变量中的值:变量必须要有值才能参与运算,(如果一个变量
没有赋值,则该变量是一个随机值)变量可以在定义后与其赋值,也可以
2024/10/14
16
2.3 运算符与表达式
逻辑运算符和逻辑表达式
符号
例子 0&&0=0、0&&1=0、1&&0=0、1&&1=1
0||0=0、0||1=1、1||0=1、1||1=1 !1=0、!0=1
使用说明: ➢1、逻辑非优先级高于逻辑与和逻辑或,逻辑与和逻辑或优先级相同; ➢2、C语言规定:非0都表示“真”,只有0表示“假”; 例:6<4&&7>-3+!5
14
2.3 运算符与表达式
赋值运算符与赋值表达式
符号
功能
例子
=
将表达式右边的数据赋值给左边的变量
x=3+a
+=
将表达式右边的计算结果加上左边的变 量再赋值给左边的变量
x+=3+a等价于x=x+(3+a)
-=
将表达式右边的计算结果减去左边的变 量再赋值给左边的变量
x-=3+a等价于x=x-(3+a)
6~7
双精度(double): 8B 10-308 ~ 10308 15~16
长双精度: 16B 10-4931 ~ 104932 18~19
C语言程序的设计电子课件源代码参考的答案02单元1 程序的设计基础 共57页

C语言程序设计
1.1 C语言程序开发过程
【例1-1】求两个整数的和的c语言程序如下,对其进行编 辑、编译、连接、执行。
#include <stdio.h> int Sum(int x,int y); int main() {
int a,b,s; printf("请输入两个整数:"); scanf("%d%d",&a,&b); s=Sum(a,b); printf("两个整数和是:%d\n",s); return 0; } int Sum(int x,int y) { int z; z=x+y; return z; }
16 常州信息职业技术学院
1.2 函数及其结构
C语言程序设计
七、注释
在VC++环境中,注释有两种: 1.以/*开头,以*/结束,中间写待注释的内容。 2.以//开头,在其后写待注释的内容。 注释的作用:增强程序的可读性和用于对程序进行调试。
17 常州信息职业技术学院
1.2 函数及其结构
C语言程序设计
int main()
{
int length, wide,pmt; printf("请输入矩形的长和宽:");
length
scanf("%d%d",&length ,&wide ); //假设用户 输入5 3
*
pmt= P1e6rimeter(len5gth, w3ide) ; //函数调用
printf("矩形的周长是:%d\n",pmt);
ASCII字符集中的任一字符)。 23 常州信息职业技术学院
Visual C++基础入门教程-第9课:画点程序

图形设计在电脑中占有举足轻重的地位,我们常见的绘图程序有Windows中的画图,Adobe的PhotoShop,以及Flash动画和3D Max等等,多媒体软件开拓了我们的视野,也改变了我们的生活,下面我们通过一个例子来学习绘图世界的基础——画点:1、画点也是一个设备输出,需要向系统提出申请,画点的函数是SetPixel(x,y,RGB(255:255:255));其中x,y是指定点的位置,RGB是红绿蓝三元色,指定点的颜色;2、启动VC,新建一个名为Pixel的Win32 A pplication工程,再新建一个相同名称的头文件和源程序文件,在头文件中输入函数的申明,在源程序中输入窗口框架代码(轻车熟路了);3、加入消息处理函数过程,画点是用鼠标,因此需要处理鼠标按键消息WM_LBUTTONDOWN以及鼠标拖动的消息WM_MOUSEMOVE,考考你:鼠标拖动和移动一不一样?消息处理过程MainWndProc(绿色双斜杠部分是注释),有的一行太长会自动折到下一行,代码如下:LRESULT A PIENTRY M ainWndProc(HWND hWnd,UINT message,WPAR A M wParam, LPAR AM lParam){HDC hdc;P A INTSTRUCT ps;switch (message){case W M_LBUTTONDOWN://接收到左键消息;case W M_RBUTTONDOWN://接收到右键消息;hdc=G etDC(hWnd);//获取设备;SetPixel( hdc,//画点函数;LOWORD(lParam), HIWORD(lParam),//画点的位置x,y;(message==W//画点的颜色;M_LBUTTONDOWN)?RGB(0,0,255):R G B(255,0,0) );//问号判断表达式?,消息==左键就返回第一个RGB蓝色,否则用后面第二个RGB颜色红色作为画点的颜色;ReleaseDC(hWnd,hdc);//释放设备;break;case W M_M OUSE M OVE://鼠标移动消息if(wParam & M K_LBUTTON || wParam & M K_RBUTTON)//检测是否有按键;{//移动同时还有鼠标按键,也就是拖动鼠标;hdc=G etDC(hWnd);SetPixel( hdc,LOWORD(lParam),HIWORD(lParam),(wParam & M K_LBUTTON)?RGB(0,0,255):RGB(255,0,0) );ReleaseDC(hWnd,hdc);}break;case W M_PAINT://加一行标题提示;hdc=BeginPaint(hWnd,&ps);SetBk M ode(hdc,TRANSPARENT);//透明背景;TextOut(hdc,40,40,"按下鼠标左、右键画点:",lstrlen("按下鼠标左、右键画点:"));TextOut(hdc,40,45,"__________________",lstrlen("__________________")); EndPaint(hWnd,&ps);break;case W M_DESTROY://退出;PostQuit M essage(0);break;default:return(DefWindowProc(hWnd,message,wParam,lParam));}return (0);}保存一下文件,单击编译条上的“构建”按钮,如果出现错误就仔细检查一下,然后单击“执行”按钮,试着用鼠标左键和右键写出自己的名字;本节学习了在用户区绘图的基本代码设计,如果你成功地完成了练习,请继续学习下一课内容;。
程序设计基础《程序设计基础》实验指导书-刘喜平BB63.4 实验指导书

《程序设计基础》课程实验指导书主撰人:刘喜平主审人:万常选江西财经大学信息管理学院二○一六年一月目录第1章C程序开发环境与调试 (1)1.1 Visual Studio Community 2015安装与使用 (1)1.1.1 Visual Studio Community 2015简介 (1)1.1.2 Visual Studio Community 2015安装 (2)1.1.3 Visual Studio Community 2015中编写C程序 (4)1.1.4 Visual Studio Community 2015中运行C程序 (7)1.1.5 Visual Studio Community 2015中调试C程序 (8)1.2 Code::Blocks的安装与使用 (14)1.2.1 Code::Blocks简介 (14)1.2.2 Code::Blocks的安装 (15)1.2.3 在Code::Blocks中编写程序 (17)1.2.4 在Code::Blocks中运行和调试程序 (20)第2章实验项目 (22)2.1 实验概述 (22)2.2 实验项目 (24)2.2.1 实验一:C程序集成开发环境及简单C程序的运行 (24)2.2.2 实验二:数据类型 (25)2.2.3 实验三:运算符、表达式及简单C程序设计 (27)2.2.4 实验四:基本程序设计技术 (30)2.2.5 实验五:C程序结构与函数 (32)2.2.6 实验六:数组 (34)2.2.7 实验七:程序设计基本算法 (39)2.2.8 实验八:指针 (42)2.2.9 实验九:结构体、联合共用体及位运算 (46)2.2.10 实验十:文件操作 (47)第1章C程序开发环境与调试C语言作为一种经典的程序设计语言,被程序员广泛使用,自然也有着丰富的开发工具。
维基百科维护了一个不完全的C编译器列表1,其中列出的C编译器有55个之多!C程序的开发工具(一般称为IDE,即集成开发环境)就更多了,因为一个编译器可能被多个IDE使用。
程序设计基础

面向问题的语言是采用快速原型法开
发应用软件的强大工具,能够快速地构 造应用系统,提高软件开发效率。
面向过程的语言需要详细地描述“怎样 做”;面向问题的语言仅需要说明“做 什么”。它和与数据库的关系非常密切 ,能够对大型数据库进行高效处理。
3)面向对象语言
在20世纪80年代推出面向对象语言。它与以 往各种语言的根本不同点在于:它设计的出发 点就是为了能更直接地描述客观世界中存在的 事物(即对象)以及它们之间的关系。
从前面得知:只有用计算机指令编写的程序能 够直接被计算机执行,而其他的指令还需要通 过中间的翻译过程。把用高级语言编写的源程 序转换成机器语言程序的翻译程序称为
编译器 或 编译程序
汇编语言
高级语言
Assemble
Compile
机器语言
CPU
24
算法
简单地讲,算法(Algorithm)是为解决一个特定
3
Software(软件)
计算机软件是所有计算机程序和相关文 件的总称.它由系统软件(如:操作系统,计算 机语言,数据库系统…..)和应用软件(如:工 具软件,杀毒软件,用户应用软件)构成.如果 没有软件,计算机是一台“裸机”,是什么 也不能干的,有了软件,才能灵动起来,成 为一台真正的“电脑”。计算机其实由软件 和硬件构成,硬件是可以看到的,是物质基 础,软件则是它的思想灵魂。所有的软件, 都是用计算机语言编写的。
d=b*b-4*a*c; //计算d
if(d>0)
//若d>0,有两个实根
{ x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("x1=%f,x2=%f\n",x1,x2);//输出两个实根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
内容提要
Visual C++是在Microsoft C的基础上发展而来的, 随着计算机软、硬件技术的快速发展,如今Visual C++已成为集编辑、编译、运行、调试于一体功能强 大的集成编程环境。本章以Visual C++ 6.0为对象, 主要介绍Visual C++集成编成环境的使用、图形设备 接口和常用图形程序设计,目的是通过对Visual C++的 学习,掌握Visual C++图形程序设计的方法,为计算 机图形学原理部分的算法实现提供程序工具和方法。
2.1 Visual C++ 6.0应用程序开发方法
介绍Visual C++ 6.0集成开发环境,以一个简 单的实例介绍利用Visual C++应用程序工程 建立方法和程序设计框架。
2.1.1 Visual C++的集成开发环境
从开始菜单中启动Visual C++ 6.0,进入开发 集成环境。打开一个项目后,可以看到Visual C++ 6.0的开发环境由标题栏、工具栏、工作 区窗口、源代码编辑窗口、输出窗口和状态栏 组成,见图2.1所示。
图2-9 输入程序源代码
图2-10 运 图形设备接口简介
在Windows系统中,程序都是通过一个叫做图形 设备接口(GDI, Graphics Device Interface)的抽象接口 和硬件打交道,Windows会自动将设备环境表映 射到相应的物理设备,并且会提供正确的输入/输 出指令。 GDI是Windows系统核心的三种动态链接库之一, 它管理Windows系统的所有程序的图形输出。在 Windows系统中,GDI向程序员提供了高层次的 绘图函数,只要掌握这些绘图函数,就可以很方 便地进行图形程序设计。
表2.1 CDC类中常用绘图函数
函 数 描 述 使用频率
Arc() BitBlt() Draw3dRect()
DrawDragRect()
椭圆弧
把位图从一个DC拷贝到另一个DC
DrawEdge() DrawIcon() Ellipse() FillRect() FillRgn()
绘制三维矩形 绘制用鼠标拖动的矩形 绘制矩形的边缘 绘制图标 绘制椭圆 绘制用给定的画刷颜色填充矩形 绘制用给定的画刷颜色填充区域
标题栏
菜单栏
工作区
源代码 编辑窗口
状态栏
图2.1 Visual C++ 6.0集成开发环境
标题栏用于显示应用程序名和所打开的文件名,标题 栏的颜色可以表明对应窗口是否被激活。菜单栏包括 文件、编辑、显示、插入、工程、编译、工具、窗口 和帮助九项主菜单,包含了从源代码的编辑、界面设 计、程序调试和编译运行在内的所有功能。工具栏列 出了常用的菜单命令功能和对象方法。工具栏的下面 是两个窗口,一个是工作区窗口,用于列出工程中的 各种对象,一个是源代码编辑窗口,用于各个对象的 程序设计。输出窗口显示项目建立过程中所产生的各 种信息。屏幕底端是状态栏,它给出当前操作或所选 择命令的提示信息。
获取当前文本的信息
获取DC窗口的指针 绘制灰色文本 绘制直线 设置当前画笔位置
**
** *** ****** ******
Pie()
Polygon()
绘制饼图
绘制多边形
***
***
PolyLine()
RealizePalette()
绘制一组直线
将逻辑调色板映射到系统调色板
*** ** **** *** ** **
图2-3 第一个问题:选择应用程序的类型
图2-4 第二个问题:选择是否要用ODBC支持
第三个问题是对ActiveX的支持。有五个选项: (1)没有对ActiveX的支持; (2)ActiveX容器,它可以包含链接和嵌入对象。容器不能 为其它的ActiveX程序提供支持,它只能维护嵌入对象; (3)微型服务器(Mini-server),应用程序不能独立运行, 只能被调用为其它程序建立ActiveX对象。 ( 4)完整服务器( Full-server),它能够独立运行,并能 够为其它应用程序建立ActiveX对象。 (5)容器和服务器,一个应用程序可以同时是容器和服务 器。 在例子中,选择第一个选项,没有对ActiveX的支持,单 击“下一个”(Next)进入下一个问题。
图2-5 第三个问题:选择是否对ActiveX的支持
第四个问题是应用程序的特性和高级选项,如下图
图2-6 应用程序的特性和高级选项
例中全部采用默认选项,进入下一个问题。 第五个问题是项目的风格、原文件注释和MFC库类型,如 图2-7所示。 在例子中全部采用默认选项,进入第六个问题。 第六个问题是确定类名和文件名,如图2-8所示。 基于第一个问题到第五个问题的回答,AppWizard会把 将要建立的新类的名称通知用户。AppWizard将为应用 程序建立四个新类,CVcAppApp是应用程序类,它是 CWinApp的派生类。CMainFrame是一个拥有应用程序 主窗口的类。CVcAppDoc和CVcAppView是该应用程序 的文档和视图类。这些名字用户可以改变。最后单击 “完成”(Finish),显示所建项目的信息,单击“确定” 后,项目建立完成。
2.1.2 应用程序工程的建立方法
单个文档应用程序主窗口中只有一个窗口,多重文档可以 在主窗口中开多个子窗口,基本对话主窗口是一个对话框。 例中选择单个文档,单击“确定”,进入下一个问题,如 图2-4所示。 第二个问题是数据库的支持,是否用ODBC存取数据库, 有四个选项:不包括数据库的支持(None)、仅包含 ODBC头文件(Header files only)、指定一个数据库但没 有文件支持和指定一个数据库但需要文件支持。当选择了 后两项,则需要用户选择一个已经建立的数据库。例中不 需要数据库支持,选择第一个选项“否”,进入第三个问 题,如图2-5所示
设备描述表(DC, Device Context)
DC 是一个数据结构,当程序向 GDI 设备中绘图时, 需要访问该设备的DC。MFC将GDI的DC封装在C++ 类中,包括 CDC 类和 CDC 派生类,这些类中的许多 成员都是对本地GDI绘图函数进行简单封装而形成的 内联函数。 DC 的作用就是提供程序与物理设备或者虚拟设备之 间的联系,除此之外, DC 还要处理绘图属性的设置, 如文本的颜色等。程序员可以通过调用专门的 GDI函 数修改绘图属性,如SetTextColor()函数。 CDC 类是 GDI 封装在 MFC 中最大的一个类,它表示 总的DC。表2.1列出了CDC中的一些常用绘图函数。
SetBkColor()
SetMapMode()
SetPixel()
SetTextColor() 设置文本颜色 StretchBlt() TextOut()
把位图从一个 DC 拷贝到另一个 DC,并根据需要扩展或压缩位图
绘制字符串文本
2.2.2 绘制基本图形
(1)画点 SetPixel()函数可以在指定的坐标位置按指定 的颜色画点。函数原型说明如下:
***
*** ** ** ***** ** *** *** *** *** **** **
GetCurrentBrush() GetCurrentFont()
GetCurrentPalette()
GetCurrentPen()
GetCurrentPosition()
GetDeviceCaps()
GetMapMode()
图2-7 项目的风格、原文件注释和MFC库类型
图2-8 通知MFC产生的类名称
2.1.3
输入源程序进行程序设计
应用程序项目工程建立以后,就为应用程序的开发建立了 一个框架,这时不输入任何程序代码,对该项目程序进行 编译和运行,可以生成一个完整的窗口程序。用户根据项 目工程中的不同类,输入自己设计的程序代码,完成用户 的程序设计。 例如,从VcApp Classes中找到CVcAppView的OnDraw() 函数,如图2-9所示。双击OnDraw()函数,这时系统会打 开 VcAppView.cpp 文件,而且光标正置于 OnDraw() 函数 中,在其中输入下列语句: pDC->TextOut(30,30,” 同 学 们 好 , 欢 迎 使 用 VC++ 编 程!”); 编译并运行该程序,运行结果如图2-10所示。
第二步:设置应用程序的特性。 这些设置包括六个问题,每一个问题都有不同的选项 供选择。一个问题选择完后,通过“下一步”(Next) 选择下一个问题,直到六个问题选择完毕。还可以通 过“上一步” (Back)返回上一个问题重新选择。下面 继续上面的例子,在单击“确定”按钮后,弹出第一 个问题窗口,如图2-3所示。 第一个问题是建立什么类型的应用程序,有三个选项: 单 个 文 档 (Single document) 、 多 重 文 档 (Multiple document)和基本对话(Dialog based)。
2.1.2 应用程序工程的建立方法
弹出图2-2对话框。切换到工程(Projects)标 签,项目类型选择MFC AppWizard(exe),输 入工程的名字(如VcApp),选择项目放置的 位置,然后单击“确定”按钮。
图2-2 Visual C++的New对话框
2.1.2 应用程序工程的建立方法
Rectangle() RoundRect() SelectObject() SelectPalette()
绘制矩形 绘制圆角矩形 选择GDI绘图对象 选择逻辑调色板