Visual C++ Windows Programming

Slides:



Advertisements
Similar presentations
软件编程基础 一、程序的编辑 Java 源程序是以 Java 为后缀的简单的文本文件,可以用各种 Java 集成开发环境中的源代码编辑器来编写,也可以用其他文 本编辑工具,如 Windows 中的记事本或 DOS 中的 EDIT 软件等。 利用文字编辑器编写下列程序 public class Hello.
Advertisements

软件开发技术基础 第 3 章 操作系统及程序设计 讲授教师:卫颜俊. 主 要 内 容 主 要 内 容 操作系统及其功能 进程管理应用程序设计 内存管理应用程序设计 设备与文件管理应用程序设计 人机接口管理应用程序设计.
C语言程序设计 主讲教师 :张群燕 电话:
四資二甲 第三週作業 物件導向程式設計.
语言文字信息管理工作 李宇明
第九章日治時期的台灣(下).
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
C++程序设计 王希 图书馆三楼办公室.
C# 程式設計 第一部分 第1-4章 C# 程式設計 - 南華大學資管系.
第二十九章 DLL / LIB函式庫開發 當我們開發程式到一個階段之後,我們一定會希望各個Component的程式碼可以分開的越清楚越好。而這一章最主要就是要告訴各位讀者,我們常在Windows系統中看到的dll或是lib的檔案該怎麼實作?做出這樣的library我們又該如何運用?為什麼使用dll或是lib有利於我們開發程式?以上這些疑問都將會在這一章中得到解答。
.NET 程式設計入門(使用 C#) 講師:鄧智鴻.
第二章 C# 基础知识.
4.1 概述 4.2 类与对象的实现 4.3 对象的初始化和析构 4.4 类的包含 4.5 类模板
Screen Layout & Background Image
PowerPoint簡報系統簡介 資料中心 宋惠亮.
Visual C++ Windows Programming
第4讲 Windows编程基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
程式設計實作.
C++ with Managed Extensions
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
程序设计期末复习 黎金宁
第三章 C++中的C 面向对象程序设计(C++).
2 C++ 的基本語法和使用環境 親自撰寫和執行程式是學好程式語言的不二法門。本章藉由兩個簡單的程式,介紹C++ 程式的基本結構和開發環境,讓初學者能逐漸建立使用C++ 的信心。
初识Visual Basic.
第5章 文本与字体 2018/12/3 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2018/12/3 Huang Weitong.
简要回顾 了解课程体系、课程目的和主要内容 掌握Windows编程涉及的一些主要概念 DOS程序和Windows程序的主要区别 窗口和程序
第1章 Windows应用程序框架的 创建与消息处理
MFC WinSock类的编程 为简化套接字网络编程,更方便地利用Windows的消息驱动机制,微软的基础类库(Microsoft Foundation Class Libary,简称MFC),提供了两个套接字类,在不同的层次上对Windows Socket API函数进行了封装,为编写Windows.
网络游戏开发语言基础 ——Windows程序设计
第7章图形、文本和位图 7.1概述 7.2图形设备接口 7.3图形绘制 7.4字体与文字处理 7.5在对话框及控件中绘图 7.6综合应用.
鄭士康 國立台灣大學 電機工程學系/電信工程研究所/ 資訊網路與多媒體研究所
软件学院 张 慧 清华大学软件学院.
Ch02-基礎語法.
$10 可空类型.
切換Dev c++顯示語言 工具->環境選項(V)->介面->language (Chinese TW)
C#程序设计基础 第二章 数据类型.
第三章 C# 基础知识.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
版权所有 复制必究 第 6 章 MFC原理与方法.
C++ 程式設計 基礎篇 張啟中 Chang Chi-Chung.
C#程序设计基础 $3 成员、变量和常量.
第十二讲 菜单、工具栏和状态栏 严宣辉 数学与计算机科学学院
《面向对象程序设计与Visual C++6.0教程》
Visual C++ Windows Programming
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C语言程序示例: 1.输入10个数,按从小到大的顺序排序。 2.汉诺塔问题。.
MFC及其应用.
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
物件導向程式設計 CH2.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第5章 文本与字体 2019/4/25 面向对象与可视化 程序设计 --Visual C++ 编程 主讲教师: 唐 龙教授 (计算机科学与技术系) 黄维通博士 (计算机与信息管理中心) 清 华 大 学 2001年2月 2019/4/25 Huang Weitong.
<编程达人入门课程> 本节内容 字符与字符串 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
功能表的建立 製作.
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
Visual C++ Windows Programming
第二章 Java语法基础.
C++程序设计 吉林大学计算机科学与技术(软件)学院.
第二章 类型、对象、运算符和表达式.
Review 1~3.
授课老师:龚涛 信息科学与技术学院 2016年3月 教材:《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
第10章媒体控制接口 10.1 MCI设备类型 10.2 MCI编程步骤 10.3使用MCIWnd窗口类.
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
結構、檔案處理(Structure, File)
第十二章 位运算.
1.4WIN32中的宽字符.
第2章 Java语言基础.
MFC的六大核心 机制3 动态创建 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
手工编写第一个 MFC程序 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
Presentation transcript:

Visual C++ Windows Programming 第七章 字型與文字輸出

大綱 基本知識 字型的描述 多樣的文字輸出方式

基本知識 基本觀念 點陣字 Windows 把文字輸出當成是另一種繪圖動作,因此要顯示文字,我們關心兩件事情: 如何設定字型 如何把字串以特定字型輸出到螢幕上 點陣字 點陣字的構成方式很簡單,就是點矩陣。點陣字的特色是大小固定,但是放大時會有明顯的鋸齒。點陣字的優點是計算速度快,但缺點就是不能任意放大,而且也較浪費磁碟空間。

基本知識 (續) 向量字 向量字是由線條構成字體。向量字的優點就是可以任意放大縮小,但是缺點是速度較慢,同時字體比較呆板,沒有變化,比較難看。 TrueType TyueType 是 Microsoft 和 Apple 合作的產物,它可以算是向量字的下一代改良品。同樣地它需要耗費時間計算,產生字型,但是獨特的 hinting 技術使得 TrueType字型縮小顯示時一樣好看。TrueType另一項優點是它在螢幕上顯示的大小和列印出來的大小一致,外型神似,這對於桌上排版而言有很大的便利。

字型的描述 LOGFONT 結構 typedef struct tagLOGFONT { LONG lfHeight; LONG lfWidth; LONG lfEscapement; LONG lfOrientation; LONG lfWeight; BYTE lfItalic; BYTE lfUnderline; BYTE lfStrikeOut; BYTE lfCharSet; BYTE lfOutPrecision; BYTE lfClipPrecision; BYTE lfQuality; BYTE lfPitchAndFamily; TCHAR lfFaceName[LF_FACESIZE]; } LOGFONT;

字型的描述 (續) LOGFONT 結構 lfHeight:若為 0 則表示為預設值,否則其絕對值代表此字型的高度。 lfWidth:設定每一個字元的平均寬度。 lfEscapement:字元排列的角度,單位為 0.1度。 lfOrientation:指定字元本身旋轉的角度,單位為 0.1 度。 lfWeight:設定字體線條的厚度。理論上厚度可以從 1 到 1000 ( 0 為任意值,400 為正常厚度, 700 為粗體)。但實際上的結果仍然視字型是否支援那麼多種粗細度的選擇。 lfItalic:若為 0 則為正常體,若不為 0 則為斜體字。

字型的描述 (續) LOGFONT 結構 (續) lfUnderline:若為 0 則為正常體,若不為 0 則加上底線。 lfStrikeOut:若為 0 則為正常體,若不為 0 則加上刪除線。 lfCharSet:指定字集,和國別語文有關。 lfOutPrecision:指定字型的精確度。 lfClipPrecision:裁剪字元的方法。 lfQuality:字體的品質。 lfPitchAndFamily:選擇字體寬度的種類 (變動寬度或者固定寬度) 。 lfFaceName:字型的名稱。

多樣的文字輸出方式 BOOL CDC::TextOut(int x, int y, LPCTSTR lpszString, int nCount); BOOL CDC::TextOut(int x, int y, const CString &str); BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect, LPCTSTR lpszString, UINT nCount, LPINT lpDxWidths); BOOL CDC::ExtTextOut(int x, int y, UINT nOptions, LPCRECT lpRect, const CString &str, LPINT lpDxWidths); int CDC::DrawText(LPCTSTR lpszString, int nCount, LPRECT lpRect, UINT nFormat); int CDC::DrawText(const CString &str, LPRECT lpRect, UINT nFormat); int CDC::TabbedTextOut(int x, int y, LPCTSTR lpszString, int nCount, int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin); int CDC::TabbedTextOut(int x, int y, const CString &str, int nTabPositions, LPINT lpnTabStopPositions, int nTabOrigin);

#include <afxwin.h> class CMyFrameWnd : public CFrameWnd { public: afx_msg void OnPaint() { CPaintDC paintDC(this); paintDC.TextOut(100, 20, "Hello World!"); paintDC.SetTextColor(RGB(255, 0, 0)); paintDC.DrawText("Hello World!", 12, CRect(100, 40, 200, 60), DT_LEFT); paintDC.SetTextColor(RGB(0, 255, 0)); paintDC.DrawText("Hello World!", 12, CRect(100, 60, 200, 80), DT_CENTER); paintDC.SetTextColor(RGB(0, 0, 255)); paintDC.DrawText("Hello World!", -1, CRect(100, 80, 200, 100), DT_RIGHT); paintDC.SetTextColor(RGB(128, 128, 128)); paintDC.DrawText("Hello &World!", -1, CRect(100, 100, 200, 120), DT_CENTER); } DECLARE_MESSAGE_MAP() } ;

BEGIN_MESSAGE_MAP(CMyFrameWnd, CFrameWnd) ON_WM_PAINT() END_MESSAGE_MAP() class CMyApp : public CWinApp { public: CMyApp() : CWinApp("Hello World!") { } BOOL InitInstance() { CFrameWnd *MyFrame = new CMyFrameWnd; m_pMainWnd = MyFrame; MyFrame->Create(NULL, "Text Test!"); MyFrame->ShowWindow(SW_SHOW); return TRUE; } } ; CMyApp Text;