亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        GDI+實(shí)現(xiàn)自定義集裝箱貝位圖的方法研究

        2012-04-12 00:00:00劉磊
        現(xiàn)代電子技術(shù) 2012年22期

        摘 要:為了解決集裝箱船舶貝位圖由以往人工繪制帶來的各種問題,達(dá)到由終端用戶在作業(yè)現(xiàn)場應(yīng)用計(jì)算機(jī)自動繪制的目的,采用DOTNET Framework封裝的GDI+接口及其相關(guān)方法,通過在VISUAL Basic.NET 編程環(huán)境中實(shí)現(xiàn)終端用戶繪制一個基礎(chǔ)網(wǎng)格,根據(jù)每次鼠標(biāo)點(diǎn)擊的網(wǎng)格位置、點(diǎn)的顏色以及二次點(diǎn)擊的水平和垂直距離,判斷如何繪制貝位矩陣,應(yīng)用GDI+實(shí)現(xiàn)貝位繪制,獲得了以鼠標(biāo)拖動或點(diǎn)擊的方式繪制集裝箱貝位圖的模式,得到了一種通用的使用GDI+技術(shù)動態(tài)創(chuàng)建集裝箱貝位圖的方法。

        關(guān)鍵詞:貝位; GDI+; 自定義圖形; 集裝箱

        中圖分類號:TN91934 文獻(xiàn)標(biāo)識碼:A 文章編號:1004373X(2012)22002102

        DOTNET Framework 為操作圖形提供了 GDI+ 應(yīng)用程序編程接口,GDI+ 是 Windows 圖形設(shè)備接口的高級實(shí)現(xiàn),通過使用 GDI+,可以創(chuàng)建圖形、繪制文本以及將圖形圖像作為對象操作,軟件開發(fā)人員可以使用 GDI+ 在 Windows 窗體和控件上方便地呈現(xiàn)圖形圖像,近年來集裝箱發(fā)展突飛猛進(jìn),隨著大型集裝箱船舶、集裝箱碼頭及集裝箱場站的建設(shè),傳統(tǒng)人工繪制集裝箱貝位圖的方法已不能滿足現(xiàn)場作業(yè)人員的需要,信息系統(tǒng)應(yīng)用也在向圖形化發(fā)展,由軟件開發(fā)人員來繪制圖形已經(jīng)不能滿足終端用戶的需求,很多場景需要終端用戶自己繪制圖形,本文描述了在Visual Basic.NET編程環(huán)境中如何開發(fā)用戶自定義集裝箱貝位圖的編程方法,使用戶可以方便地以鼠標(biāo)點(diǎn)擊的方式繪制集裝箱貝位圖。

        1 設(shè)計(jì)思路

        (1) 創(chuàng)建一個PictureBox,重寫它的Paint事件\[1\],以其零坐標(biāo)為基點(diǎn),繪制一個10行20列的網(wǎng)格(單格長寬均為20),并在左端標(biāo)注貝層,上端標(biāo)注貝列編號;

        (2) 重寫PictureBox的MouseDown事件,判斷是否為左鍵點(diǎn)擊,右鍵點(diǎn)擊無效,二次左鍵點(diǎn)擊為一組,定義一個mark變量,用以鑒別哪兩次點(diǎn)擊為一組\[2\];

        (3) 鼠標(biāo)點(diǎn)擊事件中根據(jù)點(diǎn)擊的位置計(jì)算選擇的網(wǎng)格,在第一次有效點(diǎn)擊時(shí)根據(jù)坐標(biāo)計(jì)算網(wǎng)格、取網(wǎng)格的顏色并記錄在內(nèi)存中\[3\],用紅色畫筆填充該網(wǎng)格;

        (4) 在第二次有效點(diǎn)擊時(shí)同樣計(jì)算所選擇的網(wǎng)格,并判斷網(wǎng)格的顏色,比較二次所選網(wǎng)格的橫縱坐標(biāo),用不同的顏色填充二次選擇網(wǎng)格形成的矩陣\[4\];

        (5) 當(dāng)二次所選網(wǎng)格的顏色都不等于藍(lán)色時(shí),用藍(lán)色填充網(wǎng)格矩陣,示意定義貝位;

        (6) 當(dāng)二次所選網(wǎng)格的顏色都等于藍(lán)色時(shí),用系統(tǒng)色填充網(wǎng)格矩陣,示意取消已定義的貝位\[5\];

        (7) 當(dāng)?shù)谝粋€所選網(wǎng)格為藍(lán)色、第二個所選網(wǎng)格為紅色時(shí)(二次點(diǎn)擊選擇了同一個網(wǎng)格),用系統(tǒng)色填充該網(wǎng)格\[6\],示意取消該貝位的定義;

        (8) 當(dāng)?shù)谝粋€所選網(wǎng)格為藍(lán)色、第二個所選網(wǎng)格不是藍(lán)色也不是紅色時(shí)(第一次選擇了已定義的貝位,第二次選擇了未定義的貝位),用藍(lán)色填充該第一個網(wǎng)格,示意取消本次定義貝位的操作\[7\];

        (9) 當(dāng)?shù)谝粋€所選網(wǎng)格不是藍(lán)色、第二個所選網(wǎng)格是藍(lán)色時(shí)(第一次選擇了未定義的貝位,第二次選擇了已定義的貝位),用系統(tǒng)色填充該第一個網(wǎng)格\[8\],示意取消本次定義貝位的操作;

        (10) 當(dāng)?shù)诙€所選網(wǎng)格的橫/縱坐標(biāo)小于第一個所選網(wǎng)格的橫/縱坐標(biāo)時(shí)(默認(rèn)從左上向右下繪圖,否則為無效定義),如果第一個所選網(wǎng)格為藍(lán)色則用藍(lán)色填充,否則用系統(tǒng)色填充,示意取消本次定義貝位操作\[9\]。

        2 實(shí)現(xiàn)方法

        (1) 定義相關(guān)變量,用以執(zhí)行畫筆操作或存儲相關(guān)屬性\[10\],重寫PictureBox的Paint事件,繪制網(wǎng)格并標(biāo)注貝行和貝列編號,主要代碼如下:

        ′繪制單格長寬均為20的10行20列的網(wǎng)格

        g_line.DrawRectangle(pen_line,20 + 20 * i,20 + 20 * j,20,20)

        ′繪制貝列編號

        g_line.DrawString(i,Me.Font,Brushes.Black,20 * i + 6,6)

        ′個位數(shù)的列編號

        g_line.DrawString(i,Me.Font,Brushes.Black,20 * i + 2,6)

        ′十位數(shù)的列編號

        g_line.DrawString(80 + j * 2,Me.Font,Brushes.Black,2,20 * 10 + 5 20 * j)

        ′繪制貝層號

        (2)重寫PictureBox的MouseDown事件,執(zhí)行定義貝位操作,主要代碼如下:

        p.X = e.X,p.Y = e.Y

        ′取當(dāng)前點(diǎn)的橫縱坐標(biāo)

        rectx = p.X / 20,recty = p.Y / 20

        ′取當(dāng)前選擇網(wǎng)格左上角的橫縱坐標(biāo)

        rectx = Fix(rectx) * 20,recty = Fix(recty) * 20

        color1 = rbmp.GetPixel(e.X,e.Y)

        ′取第一個所選網(wǎng)格的顏色

        rect1_x = point1.X / 20,rect1_y = point1.Y / 20

        ′取第一次選擇網(wǎng)格左上角的橫縱坐標(biāo)

        rect1_x = Fix(rect1_x) * 20,rect1_y = Fix(rect1_y) * 20

        ′用紅色填充第一次選擇的網(wǎng)格

        rbmpgraphics.FillRectangle(bru_first,rect1_x + 1,rect1_y + 1,19,19) ptbox_board.Refresh()

        point2.X = e.X,point2.Y = e.Y

        ′取第二次點(diǎn)擊的橫縱坐標(biāo)

        color2 = rbmp.GetPixel(e.X,e.Y)

        ′取第二個所選網(wǎng)格的顏色

        rect2_x = point2.X / 20

        ′取第二次選擇網(wǎng)格左上角的橫縱坐標(biāo)

        rect2_x = Fix(rect2_x) * 20,rect2_y = point2.Y / 20,rect2_y = Fix(rect2_y) * 20

        m = (rect2_x rect1_x) / 20

        ′二次所選網(wǎng)格之間的橫網(wǎng)格的數(shù)量

        n = (rect2_y rect1_y) / 20

        ′二次所選網(wǎng)格之間的縱網(wǎng)格的數(shù)量

        ′當(dāng)二次所選網(wǎng)格的顏色都不等于藍(lán)色時(shí)用藍(lán)色填充網(wǎng)格矩陣

        rbmpgraphics.FillRectangle(bru_fill,rect1_x + 20 * j + 1,rect1_y + 20 * k + 1,19,19)

        ′當(dāng)二次所選網(wǎng)格的顏色都等于藍(lán)色時(shí),用系統(tǒng)色填充網(wǎng)格矩陣

        rbmpgraphics.FillRectangle(bru_sys,rect1_x + 20 * j + 1,rect1_y + 20 * k + 1,19,19)

        ′當(dāng)?shù)谝粋€所選網(wǎng)格為藍(lán)色、第二個所選網(wǎng)格為紅色時(shí),用系統(tǒng)色填充該網(wǎng)格

        rbmpgraphics.FillRectangle(bru_sys,rect1_x + 1,

        rect1_y + 1,19,19)

        ′當(dāng)?shù)谝粋€所選網(wǎng)格為藍(lán)色、第二個所選網(wǎng)格不是藍(lán)色也不是紅色時(shí),用藍(lán)色填充該第一個網(wǎng)格

        rbmpgraphics.FillRectangle(bru_fill,rect1_x + 1,

        rect1_y + 1,19,19)

        ′當(dāng)?shù)谝粋€所選網(wǎng)格不是藍(lán)色、第二個所選網(wǎng)格是藍(lán)色時(shí),用系統(tǒng)色填充該第一個網(wǎng)格

        rbmpgraphics.FillRectangle(bru_sys,rect1_x + 1,

        rect1_y + 1,19,19)

        ′當(dāng)?shù)诙€所選網(wǎng)格的橫/縱坐標(biāo)小于第一個所選網(wǎng)格的橫/縱坐標(biāo)時(shí),恢復(fù)第一個網(wǎng)格的顏色

        rbmpgraphics.FillRectangle(bru_fill,rect1_x + 1,

        rect1_y + 1,19,19)

        rbmpgraphics.FillRectangle(bru_sys,rect1_x + 1,

        rect1_y + 1,19,19)

        3 結(jié) 語

        形象、直觀的圖形化信息管理系統(tǒng)給現(xiàn)場應(yīng)用人員帶來了極大的方便,不僅提高了工作效率,而且可以解決以往依賴人工不能解決的問題,通過演示程序,實(shí)現(xiàn)了在VISUAL Basic.NET編程環(huán)境中如何應(yīng)用GDI+使用戶可以自定義集裝箱貝位圖的方法。作者已把本文的實(shí)現(xiàn)方法應(yīng)用到連云港中理外輪理貨信息管理系統(tǒng)中,用戶使用起來形象、直觀、方便,得到了用戶的一致好評。通過本文示例,希望能增進(jìn)大家對文中涉及到的相關(guān)技術(shù)的了解,為以后編程實(shí)現(xiàn)中遇到類似的需求提供實(shí)踐基礎(chǔ)。

        參 考 文 獻(xiàn)

        [1] 王小科.C#開發(fā)實(shí)戰(zhàn)寶典[M].北京:清華大學(xué)出版社,2010.

        [2] NAGEL C, EVJEN b, GLYNN Jay, et al.C#高級編程[M].北京:清華大學(xué)出版社,2008.

        [3] 埃斯波西托.Microsoft.NET企業(yè)級應(yīng)用架構(gòu)設(shè)計(jì)[M].陳黎夫,譯.北京:人民郵電出版社,2010.

        [4] 張紅軍,耿隨心.Visual C++ 6.0編程詳解[M].北京:科學(xué)出版社,2003.

        精品无人区无码乱码大片国产| 中文字幕人妻熟在线影院| 丰满多毛的大隂户视频| 国产精品丝袜在线不卡 | 亚洲综合伊人久久综合| 四虎永久在线精品免费网址| 国产高潮刺激叫喊视频| 日本丰满妇人成熟免费中文字幕| 国产内射视频免费观看| 激情亚洲一区国产精品久久| 2020年国产精品| 亚洲色欲大片AAA无码| 国产精品午夜福利亚洲综合网| 精品卡一卡二乱码新区| 青青久在线视频免费观看| 国产老妇伦国产熟女老妇高清| 亚洲一区二区日韩精品| 久久精品国产99国产精偷| 国产嫖妓一区二区三区无码| 成人精品免费av不卡在线观看| 日本一区二区三区爱爱视频| 99久久免费只有精品国产| 996久久国产精品线观看| 亚洲av午夜福利精品一区二区| 亚洲av毛片在线免费观看| 任你躁国产自任一区二区三区| 美国黄色片一区二区三区| 少妇高潮免费在线观看| 亚洲爆乳精品无码一区二区三区| 中文字幕无线码中文字幕| 日本精品极品视频在线| 国产在线一区二区三区乱码| 精品无码久久久久成人漫画| 免费一区二区三区视频狠狠| 中文字幕午夜精品一区二区三区| 色诱视频在线观看| 欧美伊人网| 色综合久久人妻精品日韩| 国产精品无码av无码| 免费一区二区三区久久| 黄片午夜免费观看视频国产|