C# GDI+學習筆記1


—前言

本文是學習C# GDI+系列的第一篇文章,簡單的介紹了GDI+的一些基本繪圖內容,比較粗糙。但本文主要是讓大家簡單的回顧一下GDI+的基本概念。本篇文章的參考代碼請在此下載 。

GDIPTest_Article1_161112_2346.rar

如果有什么疑問,或者建議,請留言聯系本人。

 

1 窗口重繪

—Windows自動處理鼠標拖動窗體、更改窗體大小等用戶操作,自動調整窗體所占屏幕區域的大小,並進行重畫
當需要重畫時,Windows發送消息WM_PAINT
 
窗體對象的Paint事件用於響應WM_PAINT消息
–當窗體被擋住,並再次顯示時
–當其他窗體在主窗體上移動時
–當主窗體的尺寸變大時
–Windows只重繪必要的區域,ClipRectangle屬性
–調用Invalidate方法主動激發WM_PAINT消息
 

2. 繪圖內容

—點  (Point)
—矩形  (Rectangle)
—顏色  (Color)
—筆  (Pen)
—畫刷  (Brush)
—字體  (Font)
—路徑  (GraphicsPath)
—區域  (Region)
 
—.Net中提供了兩個數據結構表示繪圖中的一點的坐標值:Point(X,Y)與PointF。其封裝了兩個變量,一個表示寬度,一個表示高度。
—大多數情況下,代碼中指定的坐標、長度和寬度數值均為像素。可以使用Graphics的PageUnit屬性來確定其他的單位。
 
Rectangle矩形
—某點是否在矩形內——Contains
—矩形的放大與縮小:Inflate(為正放大,為負縮小)
—求兩個矩形的交集:Intersect
—求並集:Union
—平移:Offset
 
—顏色的HSB模型
—Hue:色調0…360
—Saturation:飽和度0…1
—Brightness:亮度0…1
—創建Color對象:
Color clr;
clr= Color.FromArgb(255, 255, 0, 255)
—另一個方法:
—Color.FromKnownColor(…)
—顏色的alpha值表示顏色的透明度。創建透明的對象,須將alpha值設置為小於‘255’、
 
 
—筆(Pen)
用於描繪線條
◦繪制線條、曲線、勾勒形狀輪廓
◦創建筆對象后,可通過設置其屬性,繪制出不同類型的線條
◦Width, Color
◦StartCap, EndCap:開始及結尾點的形狀
◦DashStyle:設置虛線樣式
 
—Brushes的類型
—創建Solid及Texture實心形狀
—創建Hatch實心形狀
—創建Gradient實心形狀
—創建PathGradient實心形狀
—創建Transparent實心形狀
—動手實驗:創建Brushes以及填充圖形
 
—Brush對象用於填充圖形
—SolidBrush: 純色畫刷
—HatchBrush: 圖案畫刷
◦–Windows提供的典型圖案填充圖形
—TextureBrush: 紋理畫刷
—LinearGradientBrush: 漸變畫刷
◦–用平滑過渡的顏色來填充一個圖形
—PathGradientBrush: 路徑漸變畫刷
◦–基於某一路徑,用復雜的混合色漸變進行填充
 
 
—使用gradient brush實現漸變的顏色
—使用path gradient brush實現用漸變的顏色填充圖形,彩色漸變是從路徑的中點到路徑的外邊界邊緣的平滑的彩色漸變.
 
 
—繪制文本
◦需要Brush對象及Font對象
◦調用Graphics對象的DrawString方法繪制文本
—繪制文本技巧
◦指定文本繪制范圍:提供矩形對象
◦控制換行:Environment.NewLine
◦繪制豎向文本:使用StringFormat對象
 
—GraphicsPath
此類封裝了一系列相連接的直線、曲線、圓弧等圍成的圖形。
可通過Add系列方法來構造一個路徑;通過CloseFigure方法自動完成路徑的設置;通過Graphics的DrawPath方法來繪制路徑,FillPath方法來填充路徑
 
 
—區域(Region)
指繪圖表面的一部分
—可以使用Rectangle或GraphicsPath對象來構造一個區域
—使用FillRegion對區域進行填充
—使用MakeInfinite將一個區域轉換為無限區域
—可對區域進行類似於集合的操作
—可以使用Region對象得到特殊形狀的窗體
 
—屏幕坐標系
 
—平移:
—g.TranslateTransform(100, 75)
—旋轉
—g.RotateTransform(45)
 
—縮放:坐標系的縮放是指坐標原點不變,但單位長度所占的像素數目有變化;
—'水平放大兩倍,垂直放大三倍
—g.ScaleTransform(2.0F, 3.0F)
 
—Bitmap
◦–位圖是位的數組,它指定了像素矩陣中各像素的顏色。
—圖形文件格式的類型
◦–BMP, GIF, JPEG, EXIF, PNG, TIFF
—旋轉、傾斜及折射圖像
◦–使用DrawImage方法並通過指定左上角、右上角、左下角的目標坐標來實現
—通過調用Image對象的GetThumbnailImage方法創建縮略圖
 
在圖像上輸出字
—獲取圖像對象所在容器的Graphics對象g,然后,調用g的DrawString;
—或是獲取圖像本身的Graphics對象,並調用DrawString方法。
 
創建圖像特效
—圖像特效是依靠對圖像的像素點直接進行操作實現的。並可對像素進行數學變換。
—其方法是
◦–調用GetPixel得到點的顏色,然后,進行相應處理后,再用SetPixel寫回到圖像中。
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM