atl 键加方向键在ps中没什么反应啊
楼主说得没错,CTRL+ALT+方向键是复制当前图层并且向该方面轻移一个像素,直接方向键轻移1个像素shift+方向键才可轻移10个像素朋友,是不是你 CTRL+ALT+方向键 操作后没有“无视”下一图层,所以看上去始终是最底层的边缘,造成错觉好像是没有移动的如何用ps将图片填充文字
用ps给图片添加文字的方法很多的,因为ps是一款强大的图片编辑软件。它的全名叫photoshop。
是由奥多比公司推出了一款位图编辑软件。
在位图编辑里面,他算是王者了。如果你的电脑并没有安装ps。你可以先去下搜索下载一个ps的安装包。下载完成之后把那个安装包给解压,然后点击那个setup的文件进行安装。
安装完成之后,双击打开ps。然后导入需要添加文字的图片。 Ps里面它有自己的文字工具。
你可以直接使用那个文字工具去添加文字。文具工具它有很多选项的。可以设计各种各样的字体。
还有很多其他的具体格式的。你可以根据自己的要求去选择那些具体格式。然后用文字工具输入自己想要的文字。文字输入完成之后,你还可以设置它的颜色。而且你还可以调节它的大小。
另外,如果你觉得文字的款式不够特别。还可以使用ps里面的那些图片编辑工具给他添加各种各样的特色。给文字添加各种颜色。而且现在新版本的ps已经有3D功能了。
你还可以用ps的三D功能去制作三D文。除了用是ps自带的文字工具去添加文字之外。也可以自己去画的。就是你可以用画笔去写字。
直接用画笔或者是其他的一些编辑工具去绘制文字。也可以通过用钢笔勾画路径,然后转选区。然后通过颜色填充命令去填充成文字也可以。
另外,也许他还支持手绘版的。就是你可以去买一个手绘板回来。然后把你的手绘板插到电脑上面。
然后你就可以用手绘板直接这样绘制。和现实中的用笔在纸上画画是一模一样。而且有了手绘板之后,ps还可以适应它的压感。现在使用手绘板的人已经越来越多了。
我会把自己可以在电脑当中就像现实写字那样去写,这在以前是不可想象的。除了方法之外。也可以通过素材合成的方式去给图片添加文字。
比如你在别的图片上面看到的一些文字很特别。你可以把那个图片导入到ps里面去。然后用抠图的方式把那些文字抠出来。然后再拷贝到你自己想要添加文字的图片里面去。
这样也可以给你想要添加文字的图片去添加文字。因为是这款图片编辑软件非常强大。所以他提供的给图片添加文字的方法也很多。
你可以根据自己的作图要求去选择使用哪一种方法。
如何创建和使用ATL控件
(一) 创建工程(1) 打开VC6集成开发环境,按新建按钮,选择PROJECT标签。(2) 选择ATL COM AppWizard。
(3) 在右侧Project Name下面的空白处输入"Polygon"。
按下OK按钮,出现如下对话框:按Finish按钮,接受默认设置,出现如下对话框:按下OK按钮,ATL COM AppWizard将生成一系列的文件,现在描述如下:Polygon.cpp:包含了DllMain,DllCanUnloadNow, DllGetClassObject,DllRegisterServer,DllUnregisterServer的实现,同时它也包含object map:BEGIN_OBJECT_MAP(ObjectMap)//这里将列出你的工程中将会用到的ATL对象,这里最初为空,//因为我们目前还没有创建新的ATL对象 END_OBJECT_MAP()Polygon.def DLL便准模块定义文件 Polygon.dsw 项目工作区文档Polygon.dsp 项目设置文档Polygon.idl 接口定义语言文件, 它详细的描述了您的工程中所有的接口Polygon.rc 资源文件, 它包含了版本信息和工程名称字符串 Resource.h 资源文件的头文件Polygonps.mk 这个就是make file,它能被用来创建代理存根DLLPolygonps.def 代理存根DLL的模块定义文件StdAfx.cpp 此文件包含ATL的执行档StdAfx.h 此文件包含ATL的头文件为了使它(Polygon DLL)变得有用,我们需要用ATL Object Wizard给它添加一个控件(control)。(二)添加一个控件(1) 打开INSERT菜单,选择New ATL Object项,出现如下对话框:(2) 我们在左边选择"Controls",右边选择Full Control,按下NEXT按钮,出现如下所示对话框:(3) 我们在Names标签页,"Short Name"后面的空白中输入"PolyCtl",这时你将注意到其他的空白将会自动完成。Class域显示控件将会使用的类名称。CoClass是控件的组件类IDInterface是接口名称,我们将会在此接口中实现一些方法和属性Type是控件描述ProgID是易记的类ID名称,用它可以得到控件的CLSID(4) 为了激活错误提示信息和connection points支持,我们选择Attributes标签页,选择Support ISupportErrorInfo和Support Connection Points,结果如下图所示:(5) 由于我们将会在多变形内部染色,所以我们需要增加一个Fill Color属性支持。
我们选择stock property标签页,在左边的列表框中双击Fill Color,结果如下图所示:(6) 按下“确定”按钮,结束创建控件。VC6将会生成如下新的文件:PolyCtl.h/cpp:包含了C++类CPolyCtl的实现PolyCtl.rgs:一个包含了注册控件所需要的注册信息的文本文件PolyCtl.htm:一个HTML文件,其中有关于这个控件的引用的代码。例如在我这个例子中有:同时Wizard也改变了以下几处:a)在StdAfx.h和StdAfx.cpp文件中增加了一条include语句,它把控件必需的ATL文件包含进来了b)注册脚本文件PolyCtl.rgs被增加到工程资源中。
c)Polygon.idl被修改以便包括新的控件细节信息。文件PolyCtl.h是最有趣的,因为它包含实现你的控件主要的代码。现在,你已经准备好了建立你的控件:1.在Build菜单点击Build Polygon.dll。
2.一旦你的控件已经完成Build,你就可以点击在Tools菜单上的ActiveX Control Test Container,控件测试容器工具将启动。3.在ActiveX Control Test Container中,选择Edit菜单的Insert New Control,Insert Control会话框出现。如下所示:4.从Insert Control会话框的列表框中选择 PolyCtl class,按下OK,你将看到ActiveX Control Test Container客户区出现一个长方形,在其中央显示了本文" ATL 3.0: PolyCtl",如下所示:5.关闭ActiveX Control Test Container。
然后,你将会在控件中加入定制属性。(三)为控件添加一个属性(1) IPolyCtl是包含你定制的方法和属性的接口。 要把属性加入这一个接口的最容易的方法是在ClassView中右击它,而且选择Add Property。如下所示:(2) Add Property to Interface会话框出现,允许你加入你的属性细节: 1.在属性类型的下拉列表框中选择short。
2.输入"Sides"作为我们的属性名称。当你编辑属性名字域的时候,Implementation下面的编辑框将会出现一些信息,这些信息将被增加到你的IDL文件。如下所示:3.按下OK按钮。MIDL(编译idl文件的程序)定义了一个Get和一个Put方法,他们将分别取得和设定属性。
当MIDL编译文件的时候,它对属性名字加前缀put_ 和get_, 在接口中自动地定义那二个方法。 连同把必需的信息加入.idl文件, Add Property to Interface对话框也在类定义文件PolyCtl.h中加入Get 和Put函数原型,并在类实现文件PolyCtl.cpp中加入相应的空的实现函数。(3) 为了能设定并且取回属性值,我们需要一个地方来储存它。从FileView, 打开 PolyCtl.h,在类定义结尾即在m_clrFillColor定义之后加入如下一行代码:short m_nSides;(4) 现在你能实现Get和Put方法。
get_Sides和put_Sides函数定义已经被增加到 PolyCtl.h 。你把代码加入 PolyCtl.cpp如下列各项:STDMETHODIMP CPolyCtl::get_Sides(short *pVal){*pVal = m_nSides;return S_OK;}STDMETHODIMP CPolyCtl::put_Sides(short newVal){if (newVal > 2 && newVal < 101){m_nSides = newVal;return S_OK;}elsereturn Error(_T("Shape must have between 3 and 100 sides"));}get_Sides函数只是通过pVal指针返回属性Sides的当前值。在put_Sides方法中,你确定使用者正在对Sides属性设定可接受的值。
你需要超过2条边, 而且由于你以后将会为每个边储存点的阵列,100是一个合理的最大值界限。如果有非法的值传递进来,你可以通过使用ATL IErrorInfo接口的Error函数来设定详细的错误信息。 如果你的客户(container)需要比HRESULT更多的关于错误的资讯,这是有用的。
(5) 你为属性做的最后一件事是设定m_nSides初值。藉由把一行代码加入 PolyCtl.h 的构造函数中使一个三角形成为默认形状:CPolyCtl(){m_nSides = 3;}你现在拥有了一个叫做Sides的属性。 除非你对它做一些事情,否则它并没有什么用处,下一步我们将改变画图代码并使用该属性。(四)变更画图代码(1) 在画图编码中你将会使用sin和cos动作计算多边形顶点, 因此在 PolyCtl.h 的顶端包含 math.h:#include <math.h>#include "resource.h" // main symbols在Release builds时需要注意:当ATL COM AppWizard产生内定工程的时候,它定义了 _ATL_MIN_CRT宏。
这个宏的作用是,在你不需要C Run-Time Library支持的时候, C Run-Time Library不被带到你的代码之内。多角形控件需要C Run-Time Library start-up code设定浮点函数初值。 因此, 如果你建立一个释放版本,你需要除去_ATL_MIN_CRT宏。
为了要除去该宏,点击Project 菜单上的Settings。 在Settings For:下拉框中选择Multiple Configurations。在跳出来的Select project configuration(s) to modify对话框中,为所有的四个释放版本按复选框, 如图所示:图12然后点击OK。在C/C++标签页,选择General, 除去Preprocessor definitions定义结尾的 ",_ATL_MIN_CRT"图13(2) 一旦多边形顶点计算出来了,你就可以通过增加一个POINT类型的数组来保存所有的点,在PolyCtl.h中:OLE_COLOR m_clrFillColor;short m_nSides;POINT m_arrPoint[100];(3) 现在改变 PolyCtl.h 的OnDraw函数。
注意你需要除去对Rectangle和DrawText函数的调用。你需要明确地得到而且选择黑色的笔和白色的刷子。 这么做是,以防你的控件正在运行在无窗口环境中。
如果你没有你自己的窗口, 你不能假定具备绘制所需要的设备环境。完成的OnDraw函数如下所示:HRESULT CPolyCtl::OnDraw(ATL_DRAWINFO& di){RECT&a。

评论列表