PIXNET Logo登入

程式狂想曲

跳到主文

這裡是程式的筆記,與對未來的狂想 分享,是學習的開始~

部落格全站分類:數位生活

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 1月 02 週日 201112:03
  • Bitmap 進階繪圖(一) 可移動 改變長度的 直線

Line1.bmp
最近在工作上需要 用到 可移動的直線  與 可 改變的圓
網路上很多介紹可以用 API 畫,但我真的不想用  gdi32
也都沒找到 相關的介紹 或 範例,只好自己想辦法寫了一個
 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(3) 人氣(2,896)

  • 個人分類:GDI+
▲top
  • 12月 31 週五 201015:43
  • Garbage Collector

.Net 下的 垃圾回收  Garbage Collector       (簡稱  GC)
在 .Net下 記憶體的回收,一般來說都是由 CLR  來決定何時回收,但 測試結果   大多是記憶體快滿的時候才會做回收的動作
在一般的程式,並沒有多大的問題,畢竟吃記憶體的量有限
但如果有做一些 圖形處理的 時候,這就不是一個很好的處理方式 (記憶體有3G,那就代表要滿3G的時候才會清空)
這時候就可以使用   手動的  GC
不過這在網路上的評價 有好有壞,簡單說     使用的人必須很清楚在做什麼
(象 之前一支小程式    可隨意 移動 放大 縮小  的圓) 
因為就是一直在重畫,每次都需要一張新的 Bitmap  這樣就非常吃記憶體
這時後來個  GC  就很有用
使用方式
宣告
c#
        [SerializableAttribute] public enum GCCollectionMode { };
VB.net  

    <SerializableAttribute> _Public Enumeration GCCollectionMode
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(915)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 30 週四 201021:52
  • GDI+ 繪圖方式比較 與 Graphicpath

在 .Net 環境下,GDI+ 是新的繪圖工具
繪圖模式主要有三種
1. 在物件上繪圖
2. 在bitmap 上繪圖在放入視窗物件
3. 存在Graphicpath後在繪製到Bitmap 放到視窗物件
在使用的方便上就如上面  依序 (字越多越不方便)
但在效能上  剛好反過來
第一種直接在物件上繪圖,是直接顯示給使用者,最簡單使用,但顯示效果最差(容易閃爍)
在Form 表單上的物件,如 buttom  picturebox,可直接在 plant  事件中執行
e.Graphic.drawLine(pen1,p1,p2)
第二種在Bitmap上繪圖,速度比較快,因為是先在 記憶體中處理好後才顯示出來
Dim bm as bitmap(500,600)
Dim g as Graphic  = Graphic.FromImage(bm)
g.drawLine(pen1,p1,p2)
picturebox1.backgroundimage = bm
第二種的優點是   可以對 畫布(Bitmap) 做一些處理,比如 灰階、二值化、放大縮小.........
如果只是做簡單繪圖是蠻方便的
 效能比我是用   畫一個太陽系  第一種直接畫在 picturebox 上,   第二種畫在Bitmap後 在存放到 Picturebox
以每秒畫30次  顯示太陽系的  公轉(由水星 到地球)  與月球繞地球轉
第一種雖然已經開啟 DoubleBuffer,但效果有限,第二種可以清楚看到  整個   公轉的狀況,所以評估 第二種直接在Bitmap上繪圖較優
(但缺點是 會比較吃記憶體)
第三種   就是 Graphicpath
就如同這功能的名, 繪圖的路徑。使用的概念如同一些繪圖軟體一樣,將要繪圖的 字  線   圖,將他們括印在記憶體
最後再一次畫出,主要針對 一次就要 顯示 或 重繪 多樣物件
這樣一方面比較省記憶體,一方面省去 繪圖的時間   (繪圖10次   變成   最後一次畫上去就好)
要先引用  System.Drawing.Drawing2D
程式碼片段
               Rect = new Rectangle(O.X - l / 2, O.Y - l / 2, l, l)
               mp[0].move(new Point(O.X, O.Y - l / 2))
               mp[1].move(new Point(O.X - l / 2, O.Y))
               mp[2].move(new Point(O.X + l / 2, O.Y))
               mp[3].move(new Point(O.X, O.Y + l / 2))
              
                Dim gp as GraphicPath= new GraphicsPath()
             
                gp.AddEllipse(Rect)
                gp.AddRectangle(mp[0].rect)
                gp.AddRectangle(mp[1].rect)
                gp.AddRectangle(mp[2].rect)
                gp.AddRectangle(mp[3].rect)
                g.DrawPath(pen1,gp)
                picturebox1.backgroundimage = bm
本來要分五次畫     (畫1個圓  與 5個框)
改成用 Graphicpath  一次就畫好了
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(3,139)

  • 個人分類:GDI+
▲top
  • 12月 26 週日 201021:44
  • Constractors 構造器(二)

Constructors 有多型 
可用 this 調用另一個構造器,依 Java 的概念,使用 Constructors 時  要多宣告一個無參數引入
避免  出錯
 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(39)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 26 週日 201021:22
  • Constractors 構造器(一)

在自定義  Class 中,當 New 出一個新的物件時,如果裡面有 必須要初始的值,沒有初始化的話
在Complier 時 會過,但在執行到需要此變數資料時,就會發生錯誤
如
class Employee
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(46)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 26 週日 201013:40
  • GDI+ Bitmap(一) LockBit

在 VB.Net 下 可以利用指標加陣列 取出 圖檔裡的資料
運用:要二值化圖檔
step1 Lockbit 圖檔
step2 取得指標   temp.scan0  
step3 copy
step4 解除lockbit

首先  
imports system.Drawing
imports system.Drawing.imaging
Dim bmtemp as bitmap = image.Fromfile("C:\.........")
Dim bits as integer = bmtemp.weight*bm.Height *3       <---取得圖檔元素     目前定此圖檔是 24bits 的圖
Dim rgbValue(bits -1 ) as byte                                         <---等會要儲存的空間
Dim rect as Rectangle = new Rectangle(0,0,bmtemp.weight,bmtemp.Height)
Dim temp as BitmapData = bmtemp.Lockbit(rect,image,ReadOnly,bmtem.pixelFormat)   <---Lockbit
System.Runtime.InteropServices.Marshal.Copy(temp.scan0,rgbvalue,0,bits)        <--取得指標後   由第1個 到 bits 個  copy到  rgbValue()
bmtemp.unlockBits(temp)


如此  就可以把 圖檔裡 的每個pixel copy 進陣列      速度會比 getpixel 速度快很多



(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(667)

  • 個人分類:GDI+
▲top
  • 12月 26 週日 201012:58
  • C# 傳遞數量變動的參數

在C# Function中,要傳遞不同數量的參數可以用 參數 params 與 陣列 來協助
 
static string Combine(params string[] paths){
        string result = string.Empty;
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(467)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 19 週日 201012:42
  • C# String 是 陣列

在C# 中 String 變數 是不可中途變換的(要  就是抹除  重寫)
 
String 可以用 陣列來取得資料
 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(321)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 19 週日 201011:23
  • c# 的可空修飾符號 "?"

在C# 中 null 值是不能給予   值 類型的變數
但有些時候就是希望 賦予  null 那怎麼辦呢??
 
 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(70)

  • 個人分類:C#.NET and VB.NET
▲top
  • 12月 19 週日 201011:17
  • C# 的 null

在C# 中 null 可以作為字串變數中使用, null表示將一個變數設為  "無"
 
null 只能給   引用類、指針類、可空值類型  使用
 
(繼續閱讀...)
文章標籤

Rh 發表在 痞客邦 留言(0) 人氣(236)

  • 個人分類:C#.NET and VB.NET
▲top
«1...891011»

個人資訊

Rh
暱稱:
Rh
分類:
數位生活
好友:
累積中
地區:

參觀人氣

  • 本日人氣:
  • 累積人氣:

程式碼

熱門文章

  • (27,571)Form Show 與 ShowDialog 的比較
  • (8,757)Backgroundworker
  • (6,512)委派其實很簡單(二)---跨執行緒
  • (6,189)XML 與 Linq 的結合一 之Xelement
  • (3,526)With 與 美化DataGridView
  • (2,852)List 資料的查詢 用 Find 方法
  • (1,124)Interface 與 DLL 動態聯結運用
  • (1,069)自定義物件 List.Sort()
  • (915)Garbage Collector
  • (837)VB6 MSHFlexGrid 匯出到 Excel

文章分類

  • SQL (1)
  • Halcon (5)
  • 電腦應用 (3)
  • 影像處理 (3)
  • 影像處理 (7)
  • VC++ (1)
  • 生活狂想 (5)
  • C#.NET and VB.NET (51)
  • GDI+ (11)
  • Jsp Servlet 專題 (1)
  • Excel (1)
  • 程式狂想 (5)
  • 未分類文章 (1)

最新文章

  • MIT Yolo V9 rd 使用:三、強化訓練參數設定
  • MIT Yolo V9 rd 使用:二、影像訓練
  • MIT Yolo V9 rd 使用:一、 Anaconda 環境設定
  • Windows 11 (Win11) 設置 Visual studio 默認以管理者權限啟用
  • WIFI DHCP 的DNS異常
  • VMware 無法使用鍵盤處裡
  • 七夕求人緣桃花
  • 台灣房價開始起跌 (青壯年人口與結婚人數會影響買房的需求) II
  • Halcon 形狀物件特性
  • 多點手眼標定

最新留言

  • [25/09/12] 一柱擎天 於文章「MIT Yolo V9 rd 使用:三、...」留言:
    大男人 https://www.tw9g.com/go...
  • [21/10/27] 訪客 於文章「Bitmap 進階繪圖(一) 可移動 改...」留言:
    謝謝 受益良多...
  • [18/06/21] n622689 於文章「Halcon 形狀物件特性...」留言:
    p0hO奢侈品仿牌,保固說到做到,誠信經營,,官網秋冬同步設...
  • [17/07/23] Roy Chang 於文章「Halcon 3D (一) 相機校正...」留言:
    您好,想請問如果是使用 羅技 Webcam C920r HD...
  • [16/10/19] Ting 於文章「Bitmap 進階繪圖(二) 可移動...」留言:
    佛心來著,受益良多...
  • [16/02/23] Liu Cheng-Kun 於文章「Backgroundworker...」留言:
    你好,請叫一下,我按照你的方法,將myobj宣告完, 結果...
  • [15/02/17] Ken 於文章「由記憶體取圖...」留言:
    您好,想跟您請教如何存圖(format16bppGraySc...
  • [14/10/28] ktbs6088 於文章「如何雙開 VM 還可以很順暢...」留言:
    ﹍字§幕♀機﹉製造﹂商○tinyurl.com/mfmg8...
  • [13/09/10] 訪客 於文章「委派其實很簡單(一)...」留言:
    您好 ~ 謝謝您的分享 有個問題跟你請教一下 直接寫這樣...
  • [13/03/03] Rh 於文章「Bitmap 進階繪圖(二) 可移動...」留言:
    圓形是 Circle 方形請用 Rectangle...

文章搜尋