国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

這篇具有很好參考價值的文章主要介紹了基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? 使用VS2019,建立窗體應(yīng)用程序,借助一系列控件實現(xiàn)畫圖功能。

? 結(jié)合組件與控件的使用。

目錄

一、預(yù)備知識

1、什么是C#的組件和控件

(1)共同點

(2)不同點

二、主要步驟

1、軟件以及環(huán)境

2、設(shè)置接口

3、界面設(shè)計

4、編寫代碼

5、編譯程序和運行

三、編寫代碼

1、設(shè)置不同繪制模式

2、為畫板添加事件

(1)MouseDown事件

?(2)MouseUp事件

(3)DoubleClick事件?

(4)Load事件

四、實現(xiàn)效果

一、預(yù)備知識

1、什么是C#的組件和控件

? ? 組件和控件是兩種不同的“工具”,有共同點,也有許多不同之處。

(1)共同點

①都不需要專門注冊。

②運行都需要.NET Framework支持,開發(fā)前必須在機器上安裝C#.NET軟件。

③都需要在桌面應(yīng)用程序或控制臺應(yīng)用、程序中調(diào)試或行。

(2)不同點

①組件是組件類模塊,控件是用戶控件模塊。

②組件的父類是Component,控件的父類是UserControl。

③組件沒有界面,控件有界面。

④組件通過添加引用使用,控件可直接拖放到窗體上。

⑤創(chuàng)建組件首先要創(chuàng)建類庫應(yīng)用程序。

基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

二、主要步驟

1、軟件以及環(huán)境

? ? 在機器上安裝C#.NET軟件,打開C#.NET編程環(huán)境,建立控件應(yīng)用程序。在其中建立解決方案、應(yīng)用程序項目和COM類模塊或控件模塊等文件。

2、設(shè)置接口

? ? 對于控件應(yīng)用程序,添加接口模塊,設(shè)計所需的接口。對于COM組件應(yīng)用程序添加類模塊,編寫類,設(shè)置類的父類和要實現(xiàn)的接口,在類中添加屬性、方法等成員。

private DrawingControl.DrawingCtl drawingCtl1;

3、界面設(shè)計

? ? 對于控件應(yīng)用程序添加控件模塊(默認已加載一個控件模塊),編寫控件,設(shè)計控件界面,為控件添加屬性、方法和事件。

基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

4、編寫代碼

? ? 在方法或事件中編寫代碼,完成相應(yīng)功能。(詳細在下一部分介紹)

5、編譯程序和運行

? ? 編譯程序,生成組件庫文件或控件程序,都是DLL文件。創(chuàng)建外部應(yīng)用程序,加載組件或控件,對其進行調(diào)試和運行。

三、編寫代碼

實現(xiàn)點、線、矩形、橢圓、圓、填充矩形、填充橢圓、填充圓、填充字體的繪制。

1、設(shè)置不同繪制模式

? ? 主要是為了區(qū)分不同的繪制模式,可以利用bool類型的變量作為“開關(guān)”;也可以使用鼠標(biāo)的Cursors變量的不同值作為“開關(guān)”;或定義一個整型變量(drawmode),通過取不同的數(shù)值來作為“開關(guān)”。

? ? 三者的不同之處在于,如果使用bool類型的變量作為“開關(guān)”,如果涉及的按鈕較多,增加了代碼長度,且不便于管理。例如:繪圖有ABCD四種不同的方法,我們在繪制時,只需要使用A方法,那么在A的點擊事件中,需要同時設(shè)置BCD方法的bool變量為false。在這里需要注意一旦其他方法沒有設(shè)置關(guān)閉,會引起畫板事件同時處理多種繪圖方法,造成混亂;使用Cursor作為“開關(guān)”時,繪圖時,鼠標(biāo)會呈現(xiàn)不同的形式,對總體代碼影響不大;定義一個整型變量,當(dāng)點擊不同的按鈕時,整型變量有不同的值相對應(yīng),這樣避免了bool變量造成混亂的情況。

? ? 使用在這里,我們通過Cursor的不同值與定義整形變量(drawmode)相結(jié)合的方法,來區(qū)分不同的畫圖方法。例如:

按鈕的MouseDown事件:

private PictureBox pic = new PictureBox();?
pic.Cursor = Cursors.UpArrow;
bs = new SolidBrush(Color.Red);//創(chuàng)建畫筆
drawmode1 = 1;

2、為畫板添加事件

(以畫橢圓為例)

(1)MouseDown事件

? ? 通過區(qū)分不同的繪圖模式,來設(shè)置不同的繪制方法。

pic.Cursor == Cursors.Cross  && drawmode == 3

? ? 定義繪圖方法。

x1 = e.X;
y1 = e.Y;
pen1 = mypen;

?(2)MouseUp事件

                x2 = e.X;
                y2 = e.Y;
                int w;
                int h;
                w = Math.Abs(x2 - x1);
                h = Math.Abs(y2 - y1);
                Rectangle r;
                ///不同的畫法也能實現(xiàn)
                if (x1 < x2 && y1 < y2)
                {
                    r = new Rectangle(x1, y1, w, h);
                    g.DrawEllipse(pen1, r);
                }
                else if (x1 > x2 && y1 > y2)
                {
                    r = new Rectangle(x2, y2, w, h);
                    g.DrawEllipse(pen1, r);
                }
                else if (x1 < x2 && y1 > y2)
                {
                    r = new Rectangle(x1, y2, w, h);
                    g.DrawEllipse(pen1, r);
                }
                else
                {
                    r = new Rectangle(x2, y1, w, h);
                    g.DrawEllipse(pen1, r);
                }
                x1 = x2;
                y1 = y2;

(3)DoubleClick事件?

            pic.Cursor = Cursors.Arrow;
            drawmode = 0;
            clicknum = 0;
            x1 = 0;
            y1 = 0;
            x2 = 0;
            y2 = 0;

(4)Load事件

? ? 為組件的添加Load事件

             pic.Cursor = Cursors.Arrow ;
             pic.MouseDown += new MouseEventHandler(this.pic_MouseDown1);//定約事件
             pic.MouseUp += new MouseEventHandler(this.pic_MouseUp);
             pic.DoubleClick += new EventHandler(this.pic_DoubleClick);   

四、實現(xiàn)效果

基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件

請勿抄襲,

代碼請到主頁查看。?文章來源地址http://www.zghlxwxcb.cn/news/detail-400907.html

到了這里,關(guān)于基于C#的畫圖應(yīng)用程序(窗體應(yīng)用程序)C#組件、控件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C#實例:多功能Windows窗體應(yīng)用程序Helloworld_WinForm

    C#實例:多功能Windows窗體應(yīng)用程序Helloworld_WinForm

    有了創(chuàng)建一個Windows窗體應(yīng)用程序的經(jīng)驗,就可以開始嘗試運用更多的控件實現(xiàn)更多豐富的功能界面。以下分享我基于項目Helloworld_WinForm 使用常用C#Windows窗體控件 實現(xiàn)一些小功能。 每一節(jié)標(biāo)題為所用到的控件,全文以實際制作過程為序編制。 1、創(chuàng)建窗體Form 項目創(chuàng)建時會默

    2024年02月04日
    瀏覽(26)
  • C#:如何用VS開啟人生中第一個Windows窗體應(yīng)用程序(Winform)?

    C#:如何用VS開啟人生中第一個Windows窗體應(yīng)用程序(Winform)?

    摘要:Windows窗體應(yīng)用程序(Winform,下文以此指代)既能有效、直觀地設(shè)計Windows窗體界面,又支持內(nèi)部邏輯的編寫。那么,對于C#初學(xué)者來說,如何開啟第一個Winform程序呢? ?? 編程語言:C# 編程環(huán)境:Visual Studio 2019 目錄 步驟 每篇寄語 ? ? ? ? 1、點擊桌面Visual Studio 2019圖

    2024年02月09日
    瀏覽(55)
  • C#:WinForm應(yīng)用程序中用鼠標(biāo)移動控件位置

    有時候在WinForm程序中,我們需要用鼠標(biāo)移動程序窗口中的對象(例如圖片對象等)的位置,可以通過定義控件的鼠標(biāo)事件來實現(xiàn)。以命名為pictureBox1的PictureBox控件為例,分別定義它的MouseDown(按下鼠標(biāo)按鈕)、MouseMove(移動鼠標(biāo))、MouseUp(釋放鼠標(biāo)按鈕)三個事件,代碼如

    2024年02月16日
    瀏覽(33)
  • 【QT】多窗體應(yīng)用程序設(shè)計

    【QT】多窗體應(yīng)用程序設(shè)計

    目錄 1主要的窗體類及其用途 2 窗體類重要特性的設(shè)置 2.1 setAttribute()函數(shù) 2.2 setWindowFlags()函數(shù) 2.3 setWindowState()函數(shù) 2.4 setWindowModality()函數(shù) 2.5 setWindowOpacity()函數(shù) 3 多窗口應(yīng)用程序的設(shè)計 3.1 主窗口設(shè)計 3.2 QFormDoc類的設(shè)計 3.3 QFormDoc類的使用 3.4 QFormTable類的設(shè)計 3.5 QFormTable類的使

    2024年01月18日
    瀏覽(29)
  • 06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計)

    06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計)

    常用的窗體基類是QWidget、QDialog 和QMainWindow,在創(chuàng)建 GUI應(yīng)用程序時選擇窗體基類就是從這 3 個類中選擇。QWidget 直接繼承于 QObject,是 QDialog 和 QMainWindow 的父類,其他繼承于 QWidget 的窗體類還有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外還有一個類QWindow,它同時從 QObject 和Q

    2024年02月13日
    瀏覽(26)
  • 基于C#的應(yīng)用程序單例唯一運行的完美解決方案 - 開源研究系列文章

    基于C#的應(yīng)用程序單例唯一運行的完美解決方案 - 開源研究系列文章

    今次介紹一個應(yīng)用程序單例唯一運行方案的代碼。 我們知道,有些應(yīng)用程序在操作系統(tǒng)中需要單例唯一運行,因為程序多開的話會對程序運行效果有影響,最基本的例子就是打印機,只能運行一個實例。這里將筆者單例運行的代碼共享出來,需要的讀者請自己復(fù)用該代碼到自

    2024年02月14日
    瀏覽(22)
  • Visual Studto 2022 如何創(chuàng)建 C++ CLR Windows窗體應(yīng)用程序

    Visual Studto 2022 如何創(chuàng)建 C++ CLR Windows窗體應(yīng)用程序

    #include \\\"pch.h\\\" #include \\\"MyForm.h\\\" using namespace System; using namespace ConsoleApplication1; int main(arraySystem::String ^ ^args) { ? ? Windows::Forms::Application::Run( gcnew MyForm()); ? ? return 0; } ?

    2024年02月03日
    瀏覽(63)
  • WPF嵌入外部exe應(yīng)用程序-使用Winfom控件承載外部程序

    WPF嵌入外部exe應(yīng)用程序-使用Winfom控件承載外部程序

    首先要解決在WPF中如何使用Winfom控件的問題,官方對此有支持的方式。 在引用管理器中添加winfrom相關(guān)的程序集 System.Windows.Forms 和 WindowsFormsIntegration 。 然后使用winform的控件,得在外面套一層WindowsFormsHost(好像添加了WindowsFormsIntegration,不使用wfi:也能使用) 這樣就可以在WPF中使

    2024年02月17日
    瀏覽(19)
  • C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    C#桌面程序(winform)如何一步步集成內(nèi)置WebApi(owin技術(shù)),解耦I(lǐng)IS,并將Api接收信息推給桌面窗體控件展示

    最近工廠有個需求,服務(wù)器上部署了一個服務(wù),此服務(wù)要把信息推送給現(xiàn)場多臺工控機上的CS上位機程序。由于涉及到多個軟件之間的通信,做架構(gòu)時,首先排除掉中間表形式,從效率和穩(wěn)定性上也排除掉了Socket,最后采用了WebApi接口形式來做通信。但是有個問題,上位機程

    2023年04月08日
    瀏覽(22)
  • C# 跨線程訪問窗體控件

    C# 跨線程訪問窗體控件

    在不加任何修飾的情況下,C# 默認不允許跨線程訪問控件,實際在項目開發(fā)過程中,經(jīng)常使用跨線程操作控件屬性,需要設(shè)置相關(guān)屬性才能正確使用,兩種方法設(shè)置如下: 方法1:告訴編譯器取消跨線程訪問檢查,在窗體構(gòu)造函數(shù)中編寫,如下圖所示: 方法2:設(shè)置所需的控件

    2024年02月11日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包