- 博客(607)
- 资源 (19)
- 收藏
- 关注
转载 图形界面编程(六) 分组容器和卡片容器(2)
点击打开链接2 卡片式容器卡片容器(TabControl)是这样一种容器:它本身包含多个容器(类似于Panel类型的面板容器),但同时只能显示其中的一个,并隐藏其余的容器。卡片容器的用途很广泛,目前流行的浏览器都使用卡片式方式在一个浏览器内可以同时打开多个页面,例如:图1 卡片式浏览的Firefox浏览器卡片式容器解决了一个这样的问题:当我们需要在同一个窗体
2016-10-25 15:32:39
1274
转载 图形界面编程(六) 分组容器和卡片容器(1)
点击打开链接——本节介绍了如何使用分组容器(GroupBox)以及一个分组RadioButton的实例1 分组容器GroupBox容器使用起来就和一个基本的Panel容器一样,它不具备布局管理功能,仅仅是一个可以容纳其它控件的容器。GroupBox的主要特点就是:该容器具有一个外观优雅的边框,并且可以具备标题文本。所以该容器的主要作用就是:将符合某一类功
2016-10-25 15:31:49
2116
转载 图形界面编程(五) 布局容器类(4)
点击打开链接6 分隔容器类分隔容器(SplitContainer)由分隔线和两个面板容器组成,可以通过分隔线将容器所在区域分为两个部分(左右或上下),每个部分里面有一个面板容器(Panel容器类),可以放置其它控件。通过鼠标拖动分隔线,可以改变容器两个区域的尺寸。分隔线可以通过SplitterWidth 属性控制,例如:[c-sharp] vie
2016-10-25 15:31:07
1577
转载 图形界面编程(五) 布局容器类(3)
点击打开链接5 表格布局无论使用锚定布局还是流式布局,都无法达到复杂布局的效果,很多时候我们不得不使用绝对布局,忍受绝对布局带来的麻烦(要么容器尺寸一变化,界面就变得一团糟;要么在容器的Resize事件中写复杂的布局代码)。其实.net Framework中还具备一种很高级的布局方式——表格布局。表格布局顾名思义,就是将容器分为n行m列的二维表,这样一个二维元组
2016-10-25 15:30:08
1446
转载 图形界面编程(五) 布局容器类(2)
点击打开链接3 布局中的空白区域在.net Framework中,每个控件和其所处的容器以及容器内控件之间,都存在一个可以调整的空白区域,这个空白区域纯粹是为了布局的美观性而存在的。容器和容器内控件之间的空白称为容器的Padding属性,容器内控件之间的空白称为控件的Margin属性。看一下示意图: 图1 Padding和Margin示意图很
2016-10-25 15:28:39
628
转载 图形界面编程(五) 布局容器类(1)
点击打开链接从ContainerControl类继承的子类作为容器窗体,可以容纳除Form类对象外的其余窗体对象。在所有容器窗体内,最基本的就是顶级容器Form类以及面板容器Panel类。这两者的主要区别为:前者具有Windows标准框架(标题栏,最大化、最小化和关闭按钮,窗体边框,可调整尺寸),并且可以独立存在;后者只是一块区域,并且必须依附在某个容器窗体上,无法独立存在
2016-10-25 15:27:35
683
转载 图形界面编程(四) 尺寸、坐标、边界
点击打开链接这一课很简单,学习几个类即可。1 尺寸:Size类和SizeF类Size类是一个表示尺寸的值类型类,具有两个正常属性:Width和Height,表示宽度和高度;一个静态属性:Empty,表示0尺寸常量(Width属性和Height属性均为0)。SizeF类和Size类似,区别主要是Size类型对象的属性为整数值,SizeF类型对象的属性为单精
2016-10-25 15:26:28
1504
转载 图形界面编程(三) 子窗体
点击打开链接我们首先来看一下窗体类的继承关系:图1 窗体类继承关系图其实微软从一开始开发Windows的时候,就采用了面向对象的方式(在C语言上模拟的面向对象),所以到后来的C++,VB,Delphi,都可以比较容易的使用一门面向对象语言来对Windows窗体这部分代码进行封装。.net也是如此,它在内部依然调用了Win32 SDK中的API函数来生
2016-10-25 15:24:46
621
转载 线程基础(2)
点击打开链接2、优雅的退出线程上一节我们讲了如何建立和启动线程,那么线程应该如何退出呢?按照要求,无论使用何种编程语言,线程都必须自然退出,而不应该被迫退出。所谓自然退出,就是线程的入口方法执行完毕退出(包括使用异常跳出方法、使用return跳出方法或令方法运行完毕),线程入口方法执行完毕,标志着线程退出,此时.net Framework会继续执行一段代码,回收
2016-10-25 15:21:40
391
转载 线程基础(1)
点击打开链接Windows系列操作系统是建立在保护模式之上的32位/64位多任务操作系统,其特点是:时分抢先式多任务操作系统。我们来详细探讨一下其中的定义。在操作系统中,进程和线程是和我们运行程序紧密相关的两个概念,其中:进程是资源分配单元,用于执行一段程序前为其分配足够的资源;线程是程序执行单元,线程用于执行程序。简单的叙述一下Windows操作系统是
2016-10-25 15:20:40
443
转载 基本线程同步
点击打开链接 所谓同步,就是给多个线程规定一个执行的顺序(或称为时序),要求某个线程先执行完一段代码后,另一个线程才能开始执行。 第一种情况:多个线程访问同一个变量: 1. 一个线程写,其它线程读:这种情况不存在同步问题,因为只有一个线程在改变内存中的变量,内存中的变量在任意时刻都有一个确定的值; 2. 一个线程读,其它线程写:这种情况会存在同步问题,主要
2016-10-25 15:19:54
390
转载 集合框架 IList,IList——向量(2)
点击打开链接五、增加泛型前面我们通过一个ArrayList类实现了IList接口,通过代码可以知道,ArrayList采用一个object[]类型的数组字段来存储对象引用。这种方式存在两个问题:Object是引用类型,所以一旦我们向ArrayList集合中存储任何值类型对象,则会发生一次“装箱”操作,.net会将值类型对象转化为引用类型对象;其后每次访问集合中的
2016-10-25 15:12:28
417
转载 集合框架 IList,IList——向量(1)
点击打开链接向量是一个可以动态改变长度的数组,起作用就是无需确定集合的初始长度,集合会随着存放数据的数量自行变化。.net Framwork中提供了两种向量的规范:集合元素类型为Object类型的IList接口,可以存放不同类型的对象引用;以泛型为基础的IList接口,只能存放一种类型的对象引用。下图展示了IList接口及IList接口的继承层次图1 I
2016-10-25 15:11:19
698
转载 窗体和消息处理
点击打开链接0 概述 Windows的界面顾名思义,由“窗体”来组成,窗体的概念:屏幕上特定的一块区域,具有绘图区域和剪裁边界,并具备响应用户输入设备操作能力。绘图区域:每一个窗体都定义了一块区域,在这块区域里,可以进行绘图,绘制的图形将显示在窗体中。随着窗体位置的移动,绘图区域也在不断移动;剪裁边界:绘图区域的四周,由剪裁边界包围,剪裁边界保证了绘图区域确定的大
2016-10-25 15:09:26
1018
转载 委托
点击打开链接 Delegate,委托(或代理)是这样一种数据类型:它的变量可以引用到某一个符合要求的方法上,通过委托可以间接地调用该方法。 C#的委托类似于C语言的函数指针,区别在于C#的委托是面向对象的。 我们可以这样认为:在纯粹的面向对象语言C#中,方法也是一种特殊对象,对象的行为就是方法的行为,对象的属性是方法的返回值和参数列表。既然可以将方法认定为对象,那该
2016-10-25 15:07:11
351
转载 接口
点击打开链接学习过C++的童鞋都应该知道,在C++中允许将一个类的成员函数定义为virtual(虚拟函数),定义为虚拟的函数,例如:[cpp] view plain copy class CTest { public: virtual void TestA(); virtual void T
2016-10-25 15:06:24
328
转载 值类型和引用类型
点击打开链接 和C++不同,在C#中,bool,char,int,long,double等也是类,一个数字例如24,就是int类型的一个对象,例如:[csharp] view plain copy string s = 24.ToString(); 我们调用了24的ToString方法,从这种我们熟悉的语法
2016-10-25 15:05:31
399
转载 ICollection接口
点击打开链接一、集合类:1.1 ICollection接口 前面我们学习了数组,这是.net Framework定义的最基本的集合类型,除过数组外,.net Framework还另外定义了很多集合类型以满足编程的需要。常见的集合有:向量;链表;双端队列;栈;树;Hash表;Hash映射。 所有的这些集合类型,在.net F
2016-10-25 15:04:32
563
转载 Object类
点击打开链接在C#中,有一个特殊的类型Object类。这个类是C#中所有其它类的超类。 我们知道,C#只允许单继承,也即每一个类都可以有唯一的一个超类。本章我们重新定义:所有的C#类有且只有一个超类。如果一个类没有显式指定,则C#以Object类作为其超类。所以所有的类都会直接或者间接的继承Object类。 定义Object类的作用: 1、向所
2016-10-25 15:03:36
514
转载 c# 双缓冲 技术与例子(解决应用程序闪烁问题)
GDI+的双缓冲问题 一直以来的误区:.net1.1 和 .net 2.0 在处理控件双缓冲上是有区别的。.net 1.1 中,使用:this.SetStyle(ControlStyles.DoubleBuffer, true); .net 2.0中,使用:this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);导致画面闪烁
2015-07-30 09:57:21
1068
转载 双缓冲技术(C# GDI)
c#如何实现防窗体闪烁的功能。大家都会想到运用双缓冲技术,那么在c#中是如何做的?1、 利用默认双缓冲(1)在应用程序中使用双缓冲的最简便的方法是使用 .NET Framework 为窗体和控件提供的默认双缓冲。通过将 DoubleBuffered 属性设置为 true。 this.DoubleBuffered=true;(2)使用 SetStyle 方法可以为 Win
2015-07-30 09:55:57
586
转载 C# GDI+双缓冲技术
GDI+的双缓冲问题 我想有很多搞图形方面的朋友都会用到双缓冲技术的时候,而且有的时候她的确是个头疼的问题。最近我也要用双缓冲技术,程序怎么调试都不合适,当要对图形进行移动时,总是会出现闪烁抖动。在网上找了些资料,说得都不清不楚的,折腾了一晚上也没弄出来。第二天觉定自己研究一下。现在把自己的一些想法拿出来跟大家分享一下。双缓冲的基本原理:(转) 一直以来的误区:.net1.
2015-07-30 09:55:09
600
转载 浅谈C#中的双缓冲
在编程当中,或多或少会接触到图像编程,对于图像编程来说窗口闪烁是个常见的问题,当窗口有大量的复杂的图元数据需要重绘,或者拥有自定义控件中的窗口闪烁问题更是显而易见的。出现闪烁的原因有很多种,大部分原因主要是因为触发WM_PAINT消息时窗体进行了重绘操作,此过程先是用窗体的背景色擦除窗口表面,再把窗体的图像绘制上去,但是如果这2个操作不在同一时间段完成的话,就会先看到背景色(大部分为白色)接着才看
2015-07-30 09:54:22
703
转载 MFC绘图不闪烁——双缓冲技术[转]
在VC/MFC用CDC绘图时,频繁的刷新,屏幕会出现闪烁的现象,CPU时间占用率相当高,绘图效率极低,很容易出现程序崩溃。所谓双缓冲技术,下面是百度百科的解释:我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(比如说画点、线)的OSD层,我称之为offscreen(后台缓冲区)。这个offscreen
2015-07-30 09:52:31
483
转载 VC 双缓冲绘图
在图形图象处理编程过程中,双缓冲是一种基本的技术。我们知道,如果窗体在响应WM_PAINT消息的时候要进行复杂的图形处理,那么窗体在重绘时由于过频的刷新而引起闪烁现象。解决这一问题的有效方法就是双缓冲技术。 因为窗体在刷新时,总要有一个擦除原来图象的过程OnEraseBkgnd,它利用背景色填充窗体绘图区,然后在调用新的绘图代码进行重绘,这样一擦一写造成了图象颜色的反差。当WM_PA
2015-07-30 09:51:35
592
转载 VC 绘图,使用双缓冲技术实现
********************所有的GDI绘图函数使用的都是逻辑坐标(逻辑范围)**************************************系统默认情况下 物理范围和逻辑范围 是1:1 的对应关系*******************1. 首先定义类成员:CDC *m_pDC;CDC MemDC;CBitmap MemBitmap;CBitma
2015-07-30 09:51:07
844
转载 C# WinForm开发系列 - Open-Source Controls
整理了一些在WinForm开发中可以使用的开源组件.(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ). 1. 仿office 2007的Ribbon风格面板(该控件模仿office 2007的Ribbon风格,显示操作面板。)2. .NET中最全功能的表格控件[翻译]Mathew Hall.著XPTable - .NET ListV
2015-07-29 14:46:51
1027
转载 C# WinForm开发系列 - ListBox/ListView/Panel
包含自定义绘制的ListBox, 带拖动,图片显示, 内嵌其它控件, 打印等扩展功能的ListView(文章及相关代码搜集自网络,仅供学习参考,版权属于原作者! ).1.ColorListBox ColorListBox.zip 2.RadioListBox RadioListBox.rar3.扩展CheckedListBox控件 ExChecke
2015-07-29 14:46:43
829
转载 C# WinForm开发系列 - 文章索引
该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm一直比较感兴趣,这几年积累收藏了不少文章,现在整理一下分类推荐给大家,避免大家浪费大把的时间去找这方面的资料,因为找资料也是一件很累的事情,Google,Baidu一下,不断的点击,不断翻阅大量的博客
2015-07-29 14:45:51
530
转载 什么是流媒体技术
传统的网络传输音视频等多媒体信息的方式是完全下载后再播放,下载常常要花数分钟甚至数小时。而采用流媒体技术,就可实现流式传输,将声音、影像或动画由服务器向用户计算机进行连续、不间断传送,用户不必等到整个文件全部下载完毕,而只需经过几秒或十几秒的启动延时即可进行观看。当声音视频等在用户的机器上播放时,文件的剩余部分还会从服务器上继续下载。 如果将文件传输看作是一次接水的过程,过去的传输方
2015-07-29 14:43:12
799
转载 CMD网络命令
net use \\ip\ipc$ " " /user:" " 建立IPC空链接 net use \\ip\ipc$ "密码" /user:"用户名" 建立IPC非空链接 net use h: \\ip\c$ "密码" /user:"用户名" 直接登陆后映射对方C:到本地为 H: net use h: \\ip\c$ 登陆后映射对方C:到本地为H: net use \\ip\i
2015-07-29 14:42:22
757
转载 流媒体与视频监控开发相关博客文章系列收集
最近因工作需要转向流媒体开发这方面, 现收集一下相关bolg文章1. 旁观者 - 郑昀 [J2ME]手机流媒体之实作[附源码][与RTSP/MMS协议无关] 2. Bēniaǒ成长笔记 - 博客园 FMS系列 3.赤色火焰.Net学习手札 【原创】C#实现视频远程监控(下载)4.懒人居
2015-07-29 14:42:15
607
转载 关于 frame的一些基本知识
关于 frame的一些基本知识只是摘抄了一部分,供初学者参考。b.帧速率:帧速率是每秒显示的图像数。标准影片(NTSC) 是29.97 帧第秒 (fps),电影是每秒24 帧fps。欧洲标准是(PAL) 25 帧fps。如果你对你影片的尺寸不是太注重的话,保留默认的Current选项。这将会使你制作的影片的帧速率和源文件一致。不管怎样,如果你想降低带宽和CPU的占用,你可以选择一个低的帧
2015-07-29 14:41:24
632
转载 音视频同步-时间戳
音视频同步-时间戳 媒体内容在播放时,最令人头痛的就是音视频不同步。从技术上来说,解决音视频同步问题的最佳方案就是时间戳:首先选择一个参考时钟(要求参考时钟上的时间是线性递增的);生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳(一般包括开始时间和结束时间);在播放时,读取数据块上的时间戳,同时参考当前参考时钟上的时间来安排播放(如果数据块的开始时间大于当前参考时钟上的时间
2015-07-29 14:39:08
865
转载 函数参数的传递问题(一级指针和二级指针)
原以为自己对指针掌握了,却还是对这个问题不太明白。请教! 程序1: void myMalloc(char *s) //我想在函数中分配内存,再返回 { s=(char *) malloc(100); } void main() { char *p=NULL; myMalloc(p); //
2015-07-23 11:16:22
579
转载 10个经典的C语言面试基础算法及代码
1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。C语言实现的代码如下:/* Displaying Fibonacci sequence up to nth term where n is entered by user. */#include int main(){ int
2015-07-23 09:43:15
1727
1
转载 最值得阅读学习的 10 个 C 语言开源项目代码
点击打开链接伯乐在线注:『阅读优秀代码是提高开发人员修为的一种捷径』http://t.cn/S4RGEz 。之前@伯乐头条 曾发过一条微博:『C 语言进阶有哪些优秀的代码可以阅读?』http://t.cn/R72EdtY 。今天来看看 平凡之路 推荐的《最值得阅读学习的 10 个 C 语言开源项目代码》。1. WebbenchWebbench是一个在linux下使用的非常简
2015-07-23 09:24:06
622
转载 c语言,连接2个数组的方法???
首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组。用动态数组实现以下核心代码:int * Link(int *a,int lenA,int *b,int lenB) { int
2015-07-22 14:18:22
7876
转载 C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])
在C++下面读入string类型,存入vector中非常的简单。在C语言下面读入string倒是很简单,但是要存入指针数组中貌似费了很大的劲都不行。C还是四年之前看过,对于C下面的字符串一直很恐惧,今天下定决心,要好好研究一下cp)存入字符指针数组(char * spa[])" title="C语言:将输入的字符串(char* cp)存入字符指针数组(char * spa[])" style="m
2015-07-22 14:17:34
5829
2
C与C++中的异常处理
2012-08-15
C#描述中的单例与多例模式
2012-08-15
C#异步回调算法
2012-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人