網站首頁 編程語言 正文
一、得到Graphics對象
1.OnPaint事件中使用
Protected overrid void OnPaint(PaintEventArgs e)
{
Graphics g=e.Graphics;
......
}
2.其他情況實現
Graphics g=this.CreaateGraphics();
二、關于Graphics的釋放
1.對于CreateGraphics()得到的Graphics對象;
2.系統會自動釋放,也可以顯式地釋放;
g.Dispose();
3.用這樣也可以 using(Graphics g=this.CreateGraphics())
{…}
這種寫法,相當于try{…}finally{g.Dispose();}
三、Pen 畫筆
1.Pen
① 在System.Drawing名稱空間中;
② 用來指定圖形的輪廓,如顏色和寬度等;
③ 畫筆創建
Pen pen=new Pen(Color.Blue,5);
④ 使用Pens類,直接用系統定義好的Pen
如 Pens.Red Pens.Blue;
2.畫筆屬性
四 Brush 畫刷
1.Brush是一個抽象類,不能被直接new實例化
2.它有5個派生類,分別實現不同類型的畫刷
① SolideBrush:實心畫刷(最簡單)
② HatchBrush:帶陰影線的畫刷;
③ LinearGradientBrush 填充顏色線性漸變的畫刷;
④ PathGradientBrush 填充顏色沿著路徑漸變的畫刷;
⑤ TextureBrush 使用圖像進行填充的畫刷
3.使用Brushes類
Brushes.Red,Brushes.Yellow;
五 繪制文本
1.Font類
1)FontFamily 字體家族,如Times New Roman 字體等;
2)字體大小:float類型
3) 字體風格
① Bold 粗體;
② Italic 斜體;
③ Regular 正規;
④ Strikeout 加刪除線;
⑤ UnderLine 加下斜線;
2.例如
Font myFont=new Font(“宋體”,16,FontStyle.Bold|FontStyle.Italic);
以上代碼創建了宋體家族的字體對象,字體大小為16 ,樣式為粗斜體。
這里用“|”(按拉或)運算來組合字體的風格;
六、DrawString 方法
DrawString(string,Font,Brush,PointF);
DrawString(string,Font,Brush,RectagleF);
DrawString(string,Font,Brush,PointF,StringFormat);
DrawString(string,Font,Brush,RectagleF,StringFormat);
DrawString(striing,Font,Brush,float,float);
DrawString(string,FOnt,Brush,float,float,StringFormat);
七、處理重繪和無效操作
1.調用以下幾個方法
① void Invalidate();
void Invalidate(Rectangle);
使用控件的特定區域無效并想控件發送繪制消息;
② void Update()
使空間重繪其工作區域內的無效區域;
③ void Refresh()
相當于 this.Invalidate(true);this.Update();
2.雙緩沖技術
1) 在內存中建立一塊“虛擬畫布”
Bitmap bmp=new Bitmap(600,600);
2) 獲取這塊內存畫布的Graphics引用
Graphics g=Graphics.FromImage(bmp);
3) 在這塊內存畫布上繪圖
g.FillEllipse(brush,i10,j10,10,10);
g.DrawLine() g.DrawString()等等;
4) 將內存畫布畫到窗口中
this.CreateGraphics().DrawImage(bmp,0,0);
總結
原文鏈接:https://blog.csdn.net/weixin_42291376/article/details/128359998
相關推薦
- 2023-02-17 Python的OptionParser模塊示例教程_python
- 2022-06-16 python讀取txt數據的操作步驟_python
- 2022-01-15 解決npm install 報錯 npm ERR! code 128 npm ERR! comman
- 2022-11-05 Rust使用libloader調用動態鏈接庫_Rust語言
- 2023-12-26 Mapper.xml文件中SQL新增數據的簡便寫法
- 2022-03-20 C++線程池實現代碼_C 語言
- 2022-07-09 Pytorch從0實現Transformer的實踐_python
- 2023-03-28 Python中用append()連接后多出一列Unnamed的解決_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支