有研究过CDC类上海船舶设备研究所的吗

他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)查看: 3801|回复: 7
设计一个USB数据采集卡,要把设备描述成什么类型,HID,CDC,USB MEMORY等?传输类型是选择哪一种?
主题帖子精华
新手入门, 积分 33, 距离下一级还需 -13 积分
在线时间0 小时
我是新手,想设计一个USB数据采集卡,不知道该从哪下手,先问这两个基本问题吧,希望大家不吝赐教!
主题帖子精华
金钱122395
在线时间1004 小时
用USB&HID吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手入门, 积分 33, 距离下一级还需 -13 积分
在线时间0 小时
回复【2楼】正点原子:
---------------------------------
HID的传输速率太低。我想用USB&MASS&STORAGE。您知道这个有例程吗?我怎么没找到。
主题帖子精华
金钱122395
在线时间1004 小时
回复【3楼】发源地:
---------------------------------
就是模拟U盘,我们有例子,不过不太方便改成你需要的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手入门, 积分 33, 距离下一级还需 -13 积分
在线时间0 小时
回复【4楼】正点原子:
---------------------------------
什么叫不太方便改成我需要的?不太理解。我用了你们的读卡器程序,想用这个改,为什么不太方便?
主题帖子精华
金钱122395
在线时间1004 小时
回复【5楼】发源地:
---------------------------------
你自己试试,如何以文件系统的形式,传递你的数据给电脑???
这个你认为好实现么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
新手入门, 积分 33, 距离下一级还需 -13 积分
在线时间0 小时
回复【6楼】正点原子:
---------------------------------
额,我是新手,不太懂。那市场上的那些USB数据采集卡一般都是将USB口描述成什么类型的?您认为什么的比较容易一些?诚心求教!谢谢原子大哥
PS:对于我来说,好像HID的传输速率太低,不符合我的要求!
主题帖子精华
金钱122395
在线时间1004 小时
回复【7楼】发源地:
---------------------------------
这我也不知道他们,总之mass&storage不适合你。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
Powered by下次自动登录
现在的位置:
& 综合 & 正文
MFC基本图形的绘制(一)设备环境类CDC、画笔和画刷
Windows的(设备图形接口),提供了绘图的基本工具,如:画点、线、多边形、位图以及文本输出等。的设备环境类封装了全部的绘图函数,使得绘制的图形即可以显示,又可以打印。
Visual C++的设备环境类是中最重要的类之一,它封装了 绘图所需要的操作,是用户编写图形和文字处理程序必不可少的。当然,绘制图形和文字时还必须指定相应的设备环境。设备环境是由保存的一个数据结构,该结构包含应用程序向设备输出时所需要的信息。
1、 设备环境类
设备环境是由保存的一个数据结构,该结构包含应用程序向设备输
出时所需要的信息,例如:图形是在屏幕上显示还是通过打印机输出。为了能让用户使用一些特殊的设备环境,基类还派生了以下各类:
()类,此类比较特殊,它的构造函数和析构函数都是针对进
行的。用户一旦获得相关的指针,就可以将它当做任何设备环境(包括屏幕、打印机)指针来使用,类的构造函数会自动调用,而它的析构函数则会自动调用。
A、只能在窗口的客户区(不包括边框、标题栏、选单栏以及状态栏)进行绘图,点(,)通常指的是客户区的左上角。其构造函数调用,析构函数调用函数
B、CWindowDC允许在窗口的任意位置中进行绘图,点(,)指整个窗口的左上角。其构造函数调用,析构函数调用函数。
(3)CMetaFileDC封装了在一个图元文件中绘图的方法。图元文件是一系列与设备无关的图片的集合,由于它对图像的保存比像素更精确,因而往往在要求较高的场合下使用,例如:的图像保存等。目前的已使用增强格式()的位图元文件来进行操作。
2、 图形设备接口
Windows为设备环境提供了各种各样的绘图工具,例如:画笔、画刷、字体等。封装了这些工具,并提供相应的类来作为应用程序的图形设备接口(,),这些类有一个共同的抽象基类,如下所示:
“位图”是一种位矩阵,每一个显示像素都对应于其中的一个或多个位,用户可以利用位图来表示图象,也可以利用它来创建画刷
“画刷”定义了一种位图形式的像素,利用它可对区域内部填充颜色或样式
“字体”是一种具有某种风格和尺寸的所有字符的完整集合,它常常
被当做资源存于磁盘中,其中有一些还依赖于某种设备
“调色板”是一种颜色映射接口,它允许应用程序在不干扰其它应用
程序的前提下,充分利用输出设备的颜色描绘能力
“画笔”是一种用于画线及绘制有形边框的工具,用户可以指定它的
颜色及宽度,并且可以指定它实线、点线或虚线等
“区域”是由多边形、椭圆或二者组合形成的一种范围,可以利用它来进行填充、裁剪以及鼠标点中测试等
2.1、使用对象
选择对象进行绘图时,一般要遵循下列步骤:
()定义一个对象(如、对象),然后用相应的函数(如、)创建此对象。但要注意;有些派生类的构造函数允许用户提供足够的信息,从而一步即可完成对象的创建任务,这些类有、
()将构造的对象选入当前设备坏境中,但不要忘记原来的GDI对象保存起来。
()绘图结束后,恢复当前设备环境中原来的对象
如下列代码:
void CMyView::OnDraw(CDC *pDC)
CPen penB//定义一个画笔变量
penBlack.CreatePen(PS_SOLID,2,rgb(0,0,0);//创建画笔
CPen *pOldPen=pDC-&SelectObject(&penBlack);//将此画笔选入当前设备环境并
//保存原来的画笔
//用此画笔绘图
pDC-&MoveTo(…);
pDC-&LineTo(…);
//其他绘图函数
pDC-&SelectObject(pOldPen);//恢复设备环境中原来的画笔
2.2、库存的对象
除了自定义的对象外,还包含了一些预定义的库存对象。由于它们是系统的一部分,因此用户用不着删除它们。的成员函数
SelectStockObject可以把一个库存对象选入当前设备环境中,并返回原先被选中的对象指针,同时使原先被选中的对象从设备环境中分离出来。如下代码:
void CMyView::OnDraw(CDC *pDC)
CPen newPen(PS_SOLID,2,RGB(0,0,0))
pDC-&SelectObject(&newPen);
pDC-&MoveTo(…);
pDC-&LineTo(…);
//其它绘图函数
pDC-&SelectStockObject(BLACK_PEN);//newPen被分离出来
SelectStockObject函数可选用的库存对象类型可以是下列值之一:
BLACK_BRUSH
DKGRAY_BRUSH
深灰色画刷
GRAY_BRUSH
HOLLOW_BRUSH
LTGRAY_BRUSH
淡灰色画刷
NULL_BRUSH
WHITE_BRUSH
DEVICE_DEFAULT_FONT
设备默认字体
SYSTEM_FONT
图形的绘制通常需要先创建画笔和画刷,然后调用相应的绘图函数。
画笔是应用程序中用于绘制各种直线和曲线的图形工具。它可分为修饰画笔和几何画笔两种类型。在这种类型中,几何画笔的定义最复杂,它不但有修饰画笔的属性,而且还和画笔的样式、阴影线类型有关,通常用在对绘图有较高要求的场合。而修饰画笔只有简单的几种属性,通常用在简单的直线和曲线等场合。
一个修饰画笔通常具有宽度、风格和颜色种属性。画笔的宽度用于确定所画的线条宽度,它是用设备单位表示的。默认的画笔宽度是一个像素单位。画笔的颜色确定了所画的线条颜色。画笔的风格确定了所绘图形的线型,它通常有实线、虚线、点线、点划线、双点划线、不可见线和内框线等种风格。这些风格在中都是以为前缀的预定义的标识。以下为修饰画笔的风格:
PS_DASHDOT
PS_INSIDEFRAME
几何画笔这里不做介绍。
创建一个修饰画笔,可以使用CPen类的CreatePen函数,其原形如下:
BOOL CreatePen(int nPenStyle,int nWidth,COLORREF crColor);
参数分别表示画笔的:风格
此外,还有一个CrearePenIndirect函数也是用于创建画笔对象,它的作用与函数是完全一样的,只是画笔的个属性不是直接出现在函数参数中,而是通过一个LOGPEN结构间接地给出。
BOOL CreatePenIndirect(LPLOGPEN lpLogPen);
此函数用由LOGPEN结构指针指定的相关参数创建画笔。LOGPEN结构如下。
typedef struct tagLOGPEN
UINT lopnS//画笔风格,
POINT lopnW//POINT结构的y不起作用,而用x表示画笔宽度
COLORREF lopnC//画笔颜色
值得注意的是:
()当修饰画笔的宽度大于个像素时,画笔的风格只能取PS_NULL、
PS_SOLID或PS_INSIDEFRAME定义,为其他风格不会起作用。
()画笔的创建工作也可在画笔的构造函数进行,它具有下列原形:
CPen(int nPenStyle,int nWidth,COLORREF crColor);
画刷用于指定充填的特性,许多窗口、控件以及其它区域都需要用画刷进行充填绘制,它比画笔的内容更加丰富。画刷的属性通常包括填充色、填充图案和填充样式种,画刷的填充色和画笔颜色一样,都是使用COLORREF颜色类型,画刷的填充图案通常是用户定义的位图,而填充样式往往是内部定义的一些特性,它们是以HS_为前缀的标识,如书页图所示。
CBrush类根据画刷属性提供了相应的创建函数,例如创建填充色画刷和填充样式画刷的函数为和,它们的原型如下:
BOOL CreateSolidBrush(COLORREF crColor);//创建填充色画刷
BOOL CreateHatchBrush(int nlndex,COLORREF crColor);//创建填充样式画刷
其中:nIndex用于指定画刷的内部填充样式,而crColor表示画刷的填充色。
与画笔相类似,也有一个LOGBRUSH逻辑结构用于画刷属性的定义,并通过CBrush的成员函数CreateBrushIndirect来创建,其原型如下:
BOOL CreateBrushIndirect(const LOGBRUSH *lpLogBrush);
其中:LOGBRUSH逻辑结构如下定义:
typedef struct tagLOGBRUSH
lbS //风格
COLORREF lbC//填充色
LONG lbH//填充样式
}LOGBRUSH;
另外,还需注意:
()画刷的创建工作也可在其构造函数中进行,它具有下列原型:
CBrush(COLORREF crColor);
CBrush(int nIndex,COLORREF crColor);
CBrush(CBitmap *pBitmap);
()画刷也可用位图来指定其填充图案,但该位图应该是像素,若位图太大,则只使用其左上角的的像素。
()画刷仅对绘图函数Chord、、、、、、Polygon、、、有效。
例:绘制一条由点连起的曲线(简单图形)
1、 建一个单文档的应用程序
2、在的函数里加如下代码:
int data[20]={19,21,32,40,41,39,42,35,33,23,21,20,24,
11,9,19,22,32,40,42};
GetClientRect(rc);
rc.DeflateRect(50,50);
int gridXnums=10,gridYnums=8;
int dx=rc.Width()/gridX
int dy=rc.Height()/gridY
CRect gridRect(rc.left,rc.top,rc.left+
dx *gridXnums,rc.top+dy *gridYnums);
CPen gridPen(0,0,RGB(0,100,200));
CPen *oldPen=pDC-&SelectObject(&gridPen);
for(int i=0;i&=gridXi++)
pDC-&MoveTo(gridRect.left+i *dx,gridRect.bottom);
pDC-&LineTo(gridRect.left+i *dx,gridRect.top);
for(int j=0;j&=gridYj++)
pDC-&MoveTo(gridRect.left,gridRect.top+j *dy);
pDC-&LineTo(gridRect.right,gridRect.top+j *dy);
pDC-&SelectObject(oldPen);
gridPen.Detach();
gridPen.CreatePen(0,0,RGB(0,0,200));
pDC-&SelectObject(&gridPen);
CBrush gridBrush(RGB(255,0,0));
CBrush *oldBrush=pDC-&SelectObject(&gridBrush);
POINT ptRect[4]={{-3,-3},{-3,3},{3,3},{3,-3}},ptDraw[4];
POINT pt[256];
int nCount=20;
deta=gridRect.Width()/nC
for(i=0;i&nCi++)
pt[i].x=gridRect.left+i *
pt[i].y=gridRect.bottom-
(int)(data[i]/60.0 *gridRect.Height());
for(j=0;j&4;j++)
ptDraw[j].x=ptRect[j].x+pt[i].x;
ptDraw[j].y=ptRect[j].y+pt[i].y;
pDC-&Polygon(ptDraw,4);
pDC-&Polyline(pt,nCount);
pDC-&SelectObject(oldPen);
pDC-&SelectObject(oldBrush);
【上篇】【下篇】>> 利用设备上下文CDC类的通道方法,实现了空心文字的显示。
利用设备上下文CDC类的通道方法,实现了空心文字的显示。
所属分类:
下载地址:
PathFont.rar文件大小:26.33 kB
分享有礼! 》
请点击右侧的分享按钮,把本代码分享到各社交媒体。
通过您的分享链接访问Codeforge,每来2个新的IP,您将获得0.1 积分的奖励。
通过您的分享链接,每成功注册一个用户,该用户在Codeforge上所获得的每1个积分,您都将获得0.2 积分的分成奖励。
利用设备上下文CDC类的通道方法,实现了空心文字的显示。-CDC class device context using the channel method, realized the hollow characters display.
Sponsored links
源码文件列表
温馨提示: 点击源码文件名可预览文件内容哦 ^_^
PathFont.aps22.75 kB08-05-07 08:48
PathFont.clw1,006.00 B08-05-07 08:48
2.04 kB08-05-07 08:48
PathFont.dsp4.17 kB08-05-07 08:48
PathFont.dsw541.00 B08-05-07 08:48
1.31 kB08-05-07 08:48
PathFont.ncb81.00 kB08-05-07 08:48
PathFont.plg1.71 kB08-05-07 08:48
5.10 kB08-05-07 08:48
5.04 kB08-05-07 08:48
1.39 kB08-05-07 08:48
3.53 kB08-05-07 08:48
210.00 B08-05-07 08:48
1.03 kB08-05-07 08:48
685.00 B08-05-07 08:48
&MOTOR&0.00 B28% 08-05-07
PathFont.ico1.05 kB08-05-07 08:48
PathFont.rc2400.00 B08-05-07 08:48
&res&0.00 B11-09-09 00:29
&PathFont&0.00 B11-09-09 00:29
(提交有效评论获得积分)
评论内容不能少于15个字,不要超出160个字。
评价成功,多谢!
下载PathFont.rar
CodeForge积分(原CF币)全新升级,功能更强大,使用更便捷,不仅可以用来下载海量源代码马上还可兑换精美小礼品了
您的积分不足,优惠套餐快速获取 30 积分
10积分 / ¥100
30积分 / ¥200原价 ¥300 元
100积分 / ¥500原价 ¥1000 元
订单支付完成后,积分将自动加入到您的账号。以下是优惠期的人民币价格,优惠期过后将恢复美元价格。
支付宝支付宝付款
微信钱包微信付款
更多付款方式:、
您本次下载所消耗的积分将转交上传作者。
同一源码,30天内重复下载,只扣除一次积分。
鲁ICP备号-3 runtime:Elapsed:686.694ms - init:0.1;find:0.9;t:1.4;tags:0.4;related:195.2;comment:0.2; 27.69
登录 CodeForge
还没有CodeForge账号?
Switch to the English version?
^_^"呃 ...
Sorry!这位大神很神秘,未开通博客呢,请浏览一下其他的吧}

我要回帖

更多关于 上海无线电设备研究所 的文章

更多推荐

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

点击添加站长微信