pixel art游戏机对对话框怎么做

什么是PS,PS到底要 怎么做
什么是PS,PS到底要 怎么做
补充:如何做出很好的效果图
怎么样将自己书写的字的形状变形
Adobe Photoshop
Photoshop的简称,具体的用法,你装上后自己摸索摸索就OK了,很简单的,但是做好很难
PHOTOSHOP是大家都熟悉并且经常使用的图像处理软件,它强大的图像处理功能确实是其它的图像处理软件所不能匹敌的,最新的PHOTOSHOP 6更将传统的图形设计与网页图像制作紧密地结合起来。无比强大的PHOTOSHOP6将使图形设计师们再一次体会到图形设计的乐趣,并且更容易地将创意展现于屏幕上。当然,要学好PHTOSHOP 6,除了熟悉软件的基本功能外,在实际使用中的技巧绝对是你需要掌握的,它能够让你在图像处理过程中更加地得心应手,花最少的时间做到最好。更多地掌握这些技巧,将是你迈向PHOTOSHOP高级应用的必经之路,OK,无论新手还是老鸟,让我们来掌握这些实际应用中必不可少的技巧,为我们的创作铺平道路吧。
第一章 色彩调整技巧
首先要说明的是,在PHOTOSHOP中最基本的技巧就是色彩调整技巧,这也是PHOTOSHOP雄据其它图形处理软件之上的一项看家本领,要想做出精美的图像,色彩模式的应用和色彩的调整是必不可少的,下面我们就对色彩调整中的技巧做一个介绍,再重申,我们不会介绍色彩的基本知识,我们只谈技巧。
首先,在空白区双击鼠标左键打开一个文件(这就是一个小技巧,可能很多朋友都还在用快捷键或菜单命令吧?),然后就要对这副图像做一个色彩认识,以便我们以后的创作。那么,一副图像大小,像素的多少怎样来计算呢?下而列出了几条重要的信息计算公式。
像素总量:
像素总量=宽度X高度(以像数点计算)
文件大小:
文件大小=像素总量X单位像素大小(byte)
单位像素大小是怎样计算的呢?最常用的RGB模式中1个像素点等于3个byte,CMYK模式1个像素等于4个byte,而灰阶模式和点阵模式一个像素点是1个byte。
打印尺寸:
打印尺寸=像素总量/设定分辩率(bpi)
总得知道图像打印出来有多大吧?那么新建文件时就得记住自己设置的分变率。相对网页图像来说,72bpi足够了,而相对印刷出版来说,分辩率就显得比较重要了,一般为打印网线数(lpi)的两倍。有了这个公式,大家在新建文件之前定义分辩率就方便了。另外,分辩率由低变高时,因为像素总量并未改变,所以会出现图像质量变差的情况,所以建议大家在初期定义文件属性时就将分辩率定高些,改变图像大小时由高至低,这样才不会造成图像质量变差的问题。
了解了文件的基本信息之后,我们就来对色彩做一些调整,一般我们采用RGB模式来做图,因为它同我们平时观看色彩的方式最相似,做起图来更加直观。然而在打印图像时我们又不得不采用CMYK模式来打印,所以RGB模式转换为CMYK模式是一个不可避免的过程,虽然是这样,我们还是应该在RGB模式下做图,处理完毕后再转换为CMYK模式来打印,因为在CMYK下作图无法使用很PHOTOSHOP的很多功能,这对处理图像造成了很大的局限性,另外CMYK模式的图像也要比RGB大上三分之一。OK,转为RGB模式,开始我们的创作吧
当我们通过扫描仪输入一副图像时,总是对它造成的颜色失真感到很头疼,但我们可以通过一系列的色彩调整技巧来弥补。首先调整图像的色阶。打开Adjust-levels色阶调整对话框。仔细观看图像的象素分布图。直方图代表了整个图像或是选定区域内的色阶分布,而水平轴表示色阶值,由0到255的变化。垂直轴表示拥有的其色阶的像素个数。看上去像一座座山吧?山高的地方,表示此色阶处的像素较多,相反的,就表示像素较少了。(图一)山分布在右边,说明图像明亮部较多。
山分布在左边,说明图像的暗部较多。
山分布在中间,说明图像的中色调较多,缺少色彩对比。
山像梳子状,说明图像色阶有跳阶的现象,某些色阶像素缺乏,无法表达渐变、平滑等效果。
当你觉得图像太亮,太刺眼时,可以将INPUT LEVES中的亮部色阶数值改小一些,或者把亮部色阶滑块往左边拉一点,这样图像就会将亮部色阶调暗一些了。放心大胆地进行修改吧,因为如果不合意,按住ALT键,CANCEL(取消)按钮就会变成RESET(重设)按钮,按一下,图像就变回初始状态了。
使用吸管工具,可以直观地对图像进行色阶调整。三个吸管工具分别代表暗部、中间色和亮部,单击其中一个,在图像上拾取颜色,就能改变INPUT中的相应滑块位置。三个工具对应三个点,暗部吸管对应黑点,中间色吸管对应中性点,亮部吸管对应白点。设置黑、白和中性点,就可以定义图像的暗部、亮部和中性色,然后通过调整色阶滑块,我们就可以扩大色阶范围。当我们通过扫描仪得到的图像色阶被压缩了时,就可以通过设置黑点、白点再扩大的方式来加大图像的暗区和亮区,使图像色阶更丰富,同时也加大了图像的明暗反差。(注意,在LAB模式下吸管工具无效)
很多人都喜欢把图像转为灰阶模式来制造黑白图像的效果,但这样做了以后,有许多在RGB模式下才能使用的命令的都无法使用了,其实在制作黑白图像有一个更好的方法:通过IMAGE(图像)-Adjust(调整)-Desaturate(去饱和度)这样的方式来把图像调整为灰阶模式,这样的话图像同样会呈现出黑白色彩,但实际上图像还是维持在RGB模式下。(图二) 想给照片上的人换件其它颜色的衣服?唉呀,这可不好办,不可能叫我一点一点地去弄个选择框,再上色吧?呵呵,当然不用,只要使用色彩调整中的替换颜色命令就可以了。打开Adjust-Replace Colro(替换颜色)指令,出现如下的对话框。(图三)注意三个吸管,从左住右依次是探色棒、加选探色棒、减选探色棒。首先用探色棒在图像上点选要替换的颜色,然后在Fuzziness(容许)范围内调整容许数值,数值越大,表示选取的色彩范围越大,反之则越小。要加选或减选颜色范围的话,就使用相应的加选棒和减选棒,最后在Transform(转换)栏内,设定Hue(色相)、Saturation(彩度)和Lightness(明亮度),既可将所选范围内的颜色进行替换。
如果需要对图片进行对比度调整,可以使用Auto contrast(自动对比度)功能,这时PHOTOSHOP会自动将图像最深色的地方加深黑色,最亮的地方加深白色,这样可以方便地增强图像的对比度。
图像出现色彩混乱,可以通过色彩平衡指令(Color Balance)来进行调整。通过滑杆地拖动可以把图像转为相应的色彩。其中的调整功能不做过多介绍了,记住,勾选Preserve Luminosity(保留明亮度)可以保持图像的中间色调。
渐变对映(Gradient Map)是PHOTOSHOP 6.0的一个新的色彩调整指令,如果要制作渐变色彩特效图,那就找它吧,绝对没错。在对话框中Dither(颤色)可以制作出平滑的渐变,面Reverse(反转)功能可以将渐变色倒转过来。
其他回答 (1)
【1】PS字体
PS字体是用Adobe的PostScript语言描述的一种曲线轮廓字体。PS字体是设计用于PS设备输出的,主要用于激光打印机和激光照排机输出。由于屏幕不是PS设备,故PS字不用于屏幕显示,因此,PS字在使用时要用相应的点阵字体来显示。PS字体是打印质量最好的字体,可以任意缩放,打印清晰、光滑。PS字体一般安装在与打印机或照排机相连的硬盘上。PS语言是国际上标准和最先进的页面描述语言,以其在精确描述文字、图像方面的优势而成为目前最先进的激光打印语言,其能力要远远超过PCL语言。
【2】Photoshop软件
Photoshop,一种有名的专业图像处理软件。
【3】文件格式
简介:PostScript文件,用于存储电子图书。
打开工具:GhostScript
【4】游戏机
PS指索尼公司的游戏机play station,它的后续版本有PS2、PSP、PS3。
CPU:32位RISC,运行频率为33.8688MHz
画面解析度:640X480
最大发色数:1677万色
同屏发色数:4000色
多边形处理能力:36万/秒
声音: PCM音源24路,信号采样频率44.1KHz,和CD音乐相同
内存:28Mbit
软件载体:CD-Rom
首批销量:30万台(当月)
全球累计销量:1亿台以上
游戏累计销量:15亿套以上
周边设备: 扩展记忆卡,鼠标,电影卡,远程通信端子,各种手制等
特显机能: 放大缩小,回旋,变形,多重卷轴,象皮泥效果等,最多一屏同显4000个活动个色, 每秒处理36万多边形
【5】政治科学
PS指Political Science,即“政治科学”,是科学的一个分支。
PS指Polystyrene,中文名聚苯乙烯
即一种热塑性合成树脂,在建筑行业(外墙保温)、包装行业(减震塑料泡沫)用途广泛,也是最常用的通用塑料之一。
【7】英语缩写
英语常用缩略语,Post Script,即备注,信件、文章末尾常用。
用法示例:
PS:这一条是俺修改的:)
【8】常用语
[英](新闻广播后的)结束语
【9】网络用语
PS 是怕死的汉语拼音的两个开头字母的缩写,除此之外在网络上还是喷射、拼死、拼杀的代名词。
【10】小说
作者,写手。网络小说里常常会出现一些作者的话,他们用“PS”代表自己。如: PS:&大家对不起,昨天没有更新,今天我多更新2章以表歉意!&
也可以理解为“注释”也就是补充或者更正文章里面的一些不便于理解的地方。
【11】门派
梦幻西游里魔族门派——盘丝洞的简称
地点:南瞻部洲
师傅:白晶晶
收徒条件:魔族,女性
参考点数分配:体质、敏捷、魔法、耐力
门派特色:不受任何暗器伤害。
门派描述:盘丝洞中多是妖娆娇媚的魔女,她们喜欢追求刺激和挑战,坦白和率真也令她们不同于寻常女子,盘丝弟子擅长蛛丝结阵,能够令任何暗器失效,此外当她们施展勾魂摄魄的时候,有几人还能心如止水,不起波澜?
【12】不常见的解释
=Pacific Southwest Airlines 太平洋西南航空公司[美]
2.Passenger Steamer客轮
3.Performance Standard 性能标准
4.PermanentSecretary 常务次官[英];
5.Pharmaceutical Society of Great Britain 英国药学会
6.Philological Society 语言学会[英]
7.Physical Sciences 物理科学
8.Picket ship (雷达)哨舰
9.Planning Study 计划研究
10.Plastic Surgery 整形外科
11.Point of Switch 转辙器尖
12.Polarized Sounder 极化音响器
13.Polystyrene 聚苯乙烯
14.Power Supply 电源
15.Press Secretary 新闻秘书
16.Pressure Switch 压力开关
17.Prestress预应力
18.Process Specification操作说明书
19.Process Sto-rage 操作[工作]存贮器
20.Procurement Specification 采购说明书
21.Product Standard 产品标准([美] NBS)
22.Programming System 程序设计系统
23.Propellant Supply 推进剂供应
24.Proton Synchrotron 质子同步加速器
25.Public Safty公共安全
26.Public Service 公共事业
27.Pull Switch 拉线开关
28.Pulse Shaper 脉冲形成器, 脉冲形成电路
29.pixel shader 像素绘图(渲染)单元
PS是聚苯乙烯塑料,容易着色、透明性好,多用于制作灯罩、牙刷柄、玩具、电器零部件。它耐酸碱腐蚀,但易溶于氯仿、二氯乙烯、香蕉水等有机溶剂。
PS:protocal stack 协议栈
等待您来回答
模型玩具领域专家ps3游戏机使用技巧_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
1页¥0.502页免费15页免费21页免费15页免费 13页免费8页免费5页免费7页免费14页免费
喜欢此文档的还喜欢6页免费1页免费4页免费2页免费7页2下载券
ps3游戏机使用技巧|资​料​分​享
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢当前位置:
在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
在VC6.0中用GDI+调用png图片实现半透明渐变的特效窗口
发布日期: 18:18
浏览次数:2991次
标  签:图形用户界面
文章评分:5.0
操  作:
称号:未设置简介:...
文章概要:
GDI+的应用使得平面图形图象编程变的更加容易,本文以一个基于对话框的时钟程序为例,在VC6.0中调用*.png图片实现半透明渐变窗口,该程序实现了指针式和数字式两种时钟显示方式。窗口实现了半透明渐变窗口、窗口拖动无移动矩形框、隐藏了任务栏窗体按钮等。
GDI+的应用使得平面图形图象编程变的更加容易,本文以一个基于对话框的时钟程序为例,在VC6.0中调用*.png图片实现半透明渐变窗口,该程序实现了指针式和数字式两种时钟显示方式。窗口实现了半透明渐变窗口、窗口拖动无移动矩形框、隐藏了任务栏窗体按钮等。
效果图如下:
图一 程序执行后与WindowXP桌面背景效果图
二、准备工作
1、图片资源准备工作。首先在Photoshop中编辑好时钟的背景、时针、分针以及数字时钟显示方式的所有图片,如下图:将这些图片保存成为带透明通道的.png格式(GDI+调用显示时能够透明调背景)。这样程序中图片资源就准备好了。
2、下面开始做好在VC6.0下展开此项工作的基本准备工作。
(1)、下载gdiplus forVC6.0的SDK,(总共两兆多)
(2)、在C盘建立文件夹“GDI+”将开发包拷贝在里面,亦即建立如下路径,以便例子代码顺利编译(当然你可以放到任意你喜欢的地方,只要在你的Project中正确包含路径即可!)。
C:\GDI+\Includes
C:\GDI+\Lib
C:\GDI+\gdiplus.dl
(3)在stdAfx.h中添加对GDI+环境的设置
#define UNICODE
#ifndef ULONG_PTR
#define ULONG_PTR unsigned long*
#include "c:\gdi+\includes\gdiplus.h" ////请修改为你的头文件路径
using namespace G
#pragma comment(lib, "c:\\gdi+\\lib\\gdiplus.lib") ////请修改为你的.lib文件路径
(4)在GDIPClock.cpp中编辑app的InitInstance()中添加如下代码进行GDI+的初始化工作
GdiplusStartupInput gdiplusStartupI
ULONG_PTR gdiplusT
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
//在对话框程序结束后
//关闭gdiplus的环境
GdiplusShutdown(gdiplusToken);
三、程序的实现全过程
1、建立一个基于对话框的Project,这里的名称为GDIPClock
2、在GDIPClockDlg.h中定义所有类成员变量,包括所有图片的指针和图片的长宽尺寸信息。
Image *m_pImageC
Image *m_pImageClock1;
Image *m_pImageHH
Image *m_pImageHM
Image *m_pImageHS
Image *m_pImageN
int m_BakWidth , m_BakH
int m_HourWidth, m_HourH
int m_MinuWidth , m_MinuH
int m_SecWidth
HINSTANCE hFuncI
BOOL (WINAPI*MYFUNC)(HWND,HDC,POINT*,SIZE*,HDC,POINT*,
COLORREF,BLENDFUNCTION*,DWORD);
MYFUNC UpdateLayeredW
在这一步中需要特别说明的是,在创建透明窗口式需要调用一个Windows API函数UpdateLayeredWindow(),该函数在.net以上的版本的SDK中有申明,但是在VC6.0下要调用要么下载200多兆的高版本SDK,要么从动态链接库“User32.dll”中调用,这里选择从“User32.dll”中调用。以上定义中后三项就是为此作准备的。
3、在对话框的OnCreate()中添加如下代码:对2的函数和成员变量进行初始化!(其中ImageFromIDResource()函数为从资源中载入Png图像的一个方法!)
int CGDIPClockDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;
hFuncInst = LoadLibrary("User32.DLL");
BOOL bRet=FALSE;
if(hFuncInst)
UpdateLayeredWindow=(MYFUNC)GetProcAddress(hFuncInst, "UpdateLayeredWindow");
AfxMessageBox("User32.dll ERROR!");
//初始化gdiplus的环境
// Initialize GDI+.
m_Blend.BlendOp=0; //theonlyBlendOpdefinedinWindows2000
m_Blend.BlendFlags=0; //nothingelseisspecial...
m_Blend.AlphaFormat=1; //...
m_Blend.SourceConstantAlpha=255;//AC_SRC_ALPHA
// png图片添加到资源中了在"PNG"下:所以这里可以从资源中调用,
// 这里Image没有提供字节调用资源中图像的函数,
// ImageFromIDResource()是通过资源名称"PNG"和资源ID号将图像
// 的Image指针传递给指针应用。来完成的。
ImageFromIDResource(IDR_PNGBAK1,"PNG",m_pImageClock1);
ImageFromIDResource(IDR_PNGNUM,"PNG",m_pImageNum);
ImageFromIDResource(IDR_PNGBAK,"PNG",m_pImageClock);
ImageFromIDResource(IDR_PNGHOUR,"PNG",m_pImageHHour);
ImageFromIDResource(IDR_PNGMIN,"PNG",m_pImageHMinu);
ImageFromIDResource(IDR_PNGSEC,"PNG",m_pImageHSec);
m_BakWidth
=m_pImageClock-&GetWidth();
m_BakHeight =m_pImageClock-&GetHeight();
m_HourWidth =m_pImageHHour-&GetWidth();
m_HourHeight=m_pImageHHour-&GetHeight();
m_MinuWidth =m_pImageHMinu-&GetWidth();
m_MinuHeight=m_pImageHMinu-&GetHeight();
m_SecWidth
=m_pImageHSec-&GetWidth();
m_SecHeight =m_pImageHSec-&GetHeight();
::SetWindowPos(m_hWnd, HWND_TOPMOST,0,0,m_BakWidth,m_BakHeight,
SWP_NOSIZE|SWP_NOMOVE);
4.在OnInitDialog()种添加如下代码对调用透明窗体初始化和设置时钟进行刷新,代码意义有注解:
//启动后立刻更新窗口样式为透明窗体
UpdateClockDisplay();
SetTimer(1,500,NULL);
//去除任务栏窗口对应按钮
ModifyStyleEx (WS_EX_APPWINDOW,WS_EX_TOOLWINDOW );
void CGDIPClockDlg::OnTimer(UINT nIDEvent)
// TODO: Add your message handler code here and/or call default
UpdateClockDisplay();
CDialog::OnTimer(nIDEvent);
5、透明窗体创建于刷新,均调用以下函数完成,函数的参数表示整个窗体的透明度
在该函数中包括了GDI+中对Image.DrawImage()函数的集中重载方式的使用,还有在GDI+中图像变换矩阵的使用初步研究。
BOOL CGDIPClockDlg::UpdateClockDisplay(int Transparent)
HDC hdcTemp=GetDC()-&m_hDC;
m_hdcMemory=CreateCompatibleDC(hdcTemp);
HBITMAP hBitMap=CreateCompatibleBitmap(hdcTemp,m_BakWidth,m_BakHeight);
SelectObject(m_hdcMemory,hBitMap);
if(Transparent&0||Transparent&100)
Transparent=100;
m_Blend.SourceConstantAlpha=int(Transparent*2.55);
HDC hdcScreen=::GetDC (m_hWnd);
GetWindowRect(&rct);
POINT ptWinPos={rct.left,rct.top};
Graphics graph(m_hdcMemory);
Point points[] = { Point(0, 0),
Point(m_BakWidth, 0),
Point(0, m_BakHeight)
static bool bFly=
bFly?graph.DrawImage(m_pImageClock, points, 3): graph.DrawImage(m_pImageClock1, points, 3);
int OxyX=140;//m_BakWidth/2+8;
int OxyY=90;//m_BakHeight/2+10;
SYSTEMTIME SystemT
// address of system time structure
GetLocalTime(&SystemTime);
// 定义一个单位矩阵,坐标原点在表盘中央
Matrix matrixH(1,0,0,1,OxyX,OxyY);
// 时针旋转的角度度
matrixH.Rotate(SystemTime.wHour*30+SystemTime.wMinute/2.0-180);
Point pointsH[] = { Point(0, 0),Point(m_HourWidth, 0),Point(0, m_HourHeight)};
matrixH.Translate(-m_HourWidth/2,-m_HourHeight/6);
// 用该矩阵转换points
matrixH.TransformPoints( pointsH, 3);
graph.DrawImage (m_pImageHHour,pointsH, 3);
// 定义一个单位矩阵,坐标原点在表盘中央
Matrix matrixM(1,0,0,1,OxyX,OxyY);
// 分针旋转的角度度
matrixM.Rotate(SystemTime.wMinute*6-180);
Point pointsM[] = { Point(0, 0),Point(m_MinuWidth, 0),Point(0, m_MinuHeight)};
matrixM.Translate(-m_MinuWidth/2,-m_MinuHeight/6);
// 用该矩阵转换pointsM
matrixM.TransformPoints( pointsM, 3);
graph.DrawImage (m_pImageHMinu,pointsM, 3);
// 定义一个单位矩阵,坐标原点在表盘中央
Matrix matrix(1,0,0,1,OxyX,OxyY);
// 秒针旋转的角度度
matrix.Rotate(SystemTime.wSecond*6-180);
Point pointsS[] = { Point(0, 0),Point( m_SecWidth,0),Point(0,m_SecHeight )};
matrix.Translate(-m_SecWidth/2,-m_SecHeight/7);
// 用该矩阵转换pointsS
matrix.TransformPoints( pointsS, 3);
graph.DrawImage (m_pImageHSec,pointsS, 3);
//HH:MM:SS
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,0, 0, 14*(SystemTime.wHour/10), 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20,0, 14*(SystemTime.wHour%10), 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*2,0, 140, 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*3, 0, 14*(SystemTime.wMinute/10), 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*4,0, 14*(SystemTime.wMinute%10), 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*5,0, 140, 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*6, 0, 14*(SystemTime.wSecond/10), 0,14,23,UnitPixel);
//该函数从m_pImageClock中剪切指定rect中的像素draw到指定位置
graph.DrawImage(m_pImageNum,20*7,0, 14*(SystemTime.wSecond%10), 0,14,23,UnitPixel);
SIZE sizeWindow={m_BakWidth,m_BakHeight};
POINT ptSrc={0,0};
DWORD dwExStyle=GetWindowLong(m_hWnd,GWL_EXSTYLE);
if((dwExStyle&0x80000)!=0x80000)
SetWindowLong(m_hWnd,GWL_EXSTYLE,dwExStyle^0x80000);
BOOL bRet=FALSE;
bRet= UpdateLayeredWindow( m_hWnd,hdcScreen,&ptWinPos,
&sizeWindow,m_hdcMemory,&ptSrc,0,&m_Blend,2);
graph.ReleaseHDC(m_hdcMemory);
::ReleaseDC(m_hWnd,hdcScreen);
hdcScreen=NULL;
::ReleaseDC(m_hWnd,hdcTemp);
hdcTemp=NULL;
DeleteObject(hBitMap);
DeleteDC(m_hdcMemory);
m_hdcMemory=NULL;
BOOL CGDIPClockDlg::ImageFromIDResource(UINT nID, LPCTSTR sTR,Image * &pImg)
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hRsrc = ::FindResource (hInst,MAKEINTRESOURCE(nID),sTR); // type
if (!hRsrc)
return FALSE;
// load resource into memory
DWORD len = SizeofResource(hInst, hRsrc);
BYTE* lpRsrc = (BYTE*)LoadResource(hInst, hRsrc);
if (!lpRsrc)
return FALSE;
// Allocate global memory on which to create stream
HGLOBAL m_hMem = GlobalAlloc(GMEM_FIXED, len);
BYTE* pmem = (BYTE*)GlobalLock(m_hMem);
memcpy(pmem,lpRsrc,len);
CreateStreamOnHGlobal(m_hMem,FALSE,&pstm);
// load from stream
pImg=Gdiplus::Image::FromStream(pstm);
// free/release stuff
GlobalUnlock(m_hMem);
pstm-&Release();
FreeResource(lpRsrc);
void CGDIPClockDlg::OnLButtonDown(UINT nFlags, CPoint point)
//禁止显示移动矩形窗体框
::SystemParametersInfo(SPI_SETDRAGFULLWINDOWS,TRUE,NULL,0);
//非标题栏移动整个窗口
SendMessage(WM_SYSCOMMAND,0xF012,0);
// PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x,point.y));
CDialog::OnLButtonDown(nFlags, point);
详细实现过程请参考源代码!
四、结束语
编写该程序的主要动力来自于对GDI+图像、图形功能的好奇,网上好多例子和文章都是关于C#或delphi等语言的。本人一直以来习惯于使用VC6.0。希望通过此文能增进与大家交流。
非常感谢,找了好久,终于找到了
19:03 发表
最多还可以输入100字
【VIP年会员制套餐】
【C/C++软件工程师实战能力集训大纲】
VC知识库发布了C/C++业界的“本草纲目”
【牛人都在千人一号群! 加群三步走!!!】
第一步:请必须加VC知识库QQ: 为好友;
第二步:请必须关注本站微博:
第三步:申请加入群:.(必须将关注微博截屏发到QQ方可通过!)
【最新2013:】
全部100% VC++源码提供: E-Form++全新大型SCADA & HMI解决方案源码、CAD解决方案源码、Gis解决方案源码 、电力石油化工仿真与图形建模解决方案源码、大量其他高级制图VC++源码下载!
【 新视频发布】
o o o o o o o
WinSock 学习笔记系列文章.........
在VC环境中除了我们所常用的Dialog、Menu和Bitmap等标准资源类型之外,它还支持自定义资源类型(Custom Resource),我们自定义的资源类型能做些什么呢?呵呵,用处多多。...
本文介绍了套接字编程的基本知识。...}

我要回帖

更多关于 devicepixelratio 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信