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

Ubuntu20.4 Mono C# gtk 編程習(xí)練筆記(二)

這篇具有很好參考價(jià)值的文章主要介紹了Ubuntu20.4 Mono C# gtk 編程習(xí)練筆記(二)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

界面設(shè)計(jì)習(xí)練后,下面寫一些程序設(shè)計(jì)心得。

程序結(jié)構(gòu)

先看一下程序總體結(jié)構(gòu),先在program.cs中找到main入口,在命名空間下是MainClass類,Main函數(shù)進(jìn)入后首先建立應(yīng)用程序環(huán)境 Application.Init,然后對(duì)MainWindow進(jìn)行實(shí)例化,顯示窗體并運(yùn)行程序 Application.Run()。

//Program.cs

using System;
using Gtk;

namespace csharp3
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            Application.Init();
            MainWindow win = new MainWindow();
            win.Show();
            Application.Run();
        }
    }
}

main -> application init -> mainwindow{builder} ->application run/quit

上述過(guò)程中,mainwindow如下,它通過(guò)gtk庫(kù)產(chǎn)生一個(gè)窗體及窗體包含的其它widgets,然后連通widgets的信號(hào) - 屬性和事件。這其中用到一個(gè) Build() 函數(shù),在C調(diào)用中常命名為 builder的指針,在gnome-builder構(gòu)建器中稱之為 template ,將界面設(shè)計(jì)器的設(shè)計(jì)文件變成程序來(lái)實(shí)現(xiàn)。public partial class MainWindow, 指明這只是 partial,一部分內(nèi)容,還有一部分由 Build() 產(chǎn)生。在linux中,Gtk界面庫(kù)與用戶程序之間一般都是這種方式。

//mainwindow.cs

using System;
using Gtk;

public partial class MainWindow : Gtk.Window
{
    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        Application.Quit();
        a.RetVal = true;
    }

    protected void OnButton5Clicked(object sender, EventArgs e)
    {
        entry2.Text = "Hello!";
    }

    protected void OnButton6Clicked(object sender, EventArgs e)
    {
        Application.Quit();
    }
}

也可以不用設(shè)計(jì)器,自己寫build的內(nèi)容。Mono的設(shè)計(jì)器支持C#,但不支持VB.NET,而Mono本身是支持VB.NET的。因此,如果在Mono上用VB.NET開發(fā)的話,需要自己寫build后的界面語(yǔ)句。大至是下面的樣子。首先產(chǎn)生個(gè)Window,然后向window中加入控件并顯示控件,如果需要產(chǎn)生事件則將事件與回調(diào)函數(shù)過(guò)程的地址連起來(lái)(Addressof),最后show的是window。除了主窗體給個(gè)初始尺寸,控件本身一般都是由sizer,比如vbox等去控制的。習(xí)慣于linux界面這種方式后,可以不用界面設(shè)計(jì)器,腦子想它是什么樣就add上什么widget,個(gè)別屬性調(diào)整一下,fill和expand用好,加控件時(shí)pack靠start或靠end,最后試運(yùn)行調(diào)整一下就可以了。

        Dim window As Gtk.Window = New Gtk.Window("Buttons")
        AddHandler window.DeleteEvent, AddressOf OnDeleteEvent
        window.BorderWidth = 0

        window.Resize(800, 600)
        window.WindowPosition = WindowPosition.Center

        Dim box1 As VBox = New VBox(False, 10)
        window.Add(box1)
        box1.Show()
        box1.Homogeneous = False

        Dim box2 As VBox = New VBox(False, 10)
        box2.BorderWidth = 10
        box1.PackStart(box2, True, True, 0)
        box2.Show()

        button1 = New Button("Button 1")
        box2.PackStart(button1, True, True, 0)
        button1.Show()
        AddHandler button1.Clicked, AddressOf OnButton1Clicked

        Dim button2 As Button = New Button("Button 2")
        'button2.Active = true
        box2.PackStart(button2, True, True, 0)
        button2.Show()

        Dim separator As HSeparator = New HSeparator()
        box1.PackStart(separator, False, True, 0)
        separator.Show()

        Dim box3 As VBox = New VBox(False, 10)
        box3.BorderWidth = 10
        box1.PackStart(box3, False, True, 0)

        Dim button3 As Button = New Button("Close")
        AddHandler button3.Clicked, AddressOf OnExitButtonEvent

        Dim entry1 As Entry = new Entry("Please")
        box3.PackStart(entry1, True, True, 0)
        entry1.Show()
        
        box3.PackStart(button3, True, True, 0)
        button3.CanDefault = True
        button3.GrabDefault()
        button3.Show()

Mono C#編程中,可以不關(guān)注Build后的內(nèi)容,它們?cè)诹硗庖粋€(gè).cs中。如果抽象一些理解的話,builder是圖中的樣子,像個(gè)黑盒子接線箱,編程時(shí)連通相應(yīng)的信號(hào)即可。

Ubuntu20.4 Mono C# gtk 編程習(xí)練筆記(二),筆記

C#有設(shè)計(jì)器還是比VB.NET方便一些,不過(guò)在C#中也可以使用VB.NET功能,在引用中加上:

using?VB?=?Microsoft.VisualBasic

引用后即產(chǎn)生新的命名空間VB,比如在C#中使用VB.NET的文件讀寫,可以寫成:

                VB.FileSystem.FileOpen(1, "VBNETTEST.TXT", VB.OpenMode.Output, VB.OpenAccess.Write, VB.OpenShare.Shared);
                VB.FileSystem.WriteLine(1, "Hello World! - 1");
                VB.FileSystem.WriteLine(1, "Hello World! - 2");
                VB.FileSystem.WriteLine(1, "Hello World! - 3");
                VB.FileSystem.WriteLine(1, "Hello World! - 4");
                VB.FileSystem.WriteLine(1, "Hello World! - 5");
                VB.FileSystem.FileClose(1);

微軟的Microsoft.VisualBasic命名空間中VB.NET功能繁多,喜歡VB.NET編程的話可以把它引用到進(jìn)程序中,Mono的C#設(shè)計(jì)器也就間接地支持VB.NET語(yǔ)言開發(fā)了。

用戶程序

默認(rèn)的MainWindow.cs產(chǎn)生MainWindow:Gtk.Window類,里面有個(gè)MainWindow()方法,方法中首先是Build(),自己的程序一般使用這個(gè)類,加入一些類內(nèi)變量,在類內(nèi)加入一些方法等。需要的話也可另僻空間,用另類,用另類方法等。

//MainWindow.cs

using System;
using Gtk;
using System.Threading.Tasks;
using VB = Microsoft.VisualBasic;
using Cairo;

public partial class MainWindow : Gtk.Window
{
    //Store previous background color of drawingarea1
    private Gdk.Color StoreColor = new Gdk.Color(255, 255, 255);
    private int iArea1ObjX = 10;
    private int iArea1ObjY = 50;
    private uint timerID1, timerID2;
    private ImageSurface surfacepub;
    private Context ctxpub;
    private Context ctxArea1;
    private int drawingarea1Width;
    private int drawingarea1Height;


    public MainWindow() : base(Gtk.WindowType.Toplevel)
    {
        Build();

        drawingarea1.AppPaintable = true;
        CreateContext();
        timerID1 = GLib.Timeout.Add(100, OnTimedEvent1);
        timerID2 = GLib.Timeout.Add(100, OnTimedEvent2);

        /*
        aTimer = new System.Timers.Timer(300);
        aTimer.Elapsed += OnTimedEvent;
        aTimer.AutoReset = true;
        aTimer.Enabled = true;
        */
    }

    protected void OnDeleteEvent(object sender, DeleteEventArgs a)
    {
        DestroyContext();
        Gtk.Application.Quit();
        a.RetVal = true;
    }

    protected void OnButton16Clicked(object sender, EventArgs e)
    {
        DestroyContext();
        Gtk.Application.Quit();
    }

    protected void OnColorbutton1ColorSet(object sender, EventArgs e)
    {
        var redcolor = colorbutton1.Color.Red;
        var greencolor = colorbutton1.Color.Green;
        var bluecolor = colorbutton1.Color.Blue;
    }

先寫這么多,一些常用widgets使用方法在下篇心得中寫。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-812111.html

到了這里,關(guān)于Ubuntu20.4 Mono C# gtk 編程習(xí)練筆記(二)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • ubuntu20.4升級(jí)OpenSSL和OpenSSH

    ubuntu20.4升級(jí)OpenSSL和OpenSSH

    參考:https://blog.csdn.net/weixin_37534043/article/details/120822689 https://blog.csdn.net/xujiamin0022016/article/details/87817124 openssl 官方下載地址: https://www.openssl.org/source/ openssh 官方下載地址:https://fastly.cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/ zlib 官方下載地址: http://www.zlib.net/ CSDN資源下載鏈接: http

    2024年02月01日
    瀏覽(27)
  • Ubuntu20.4配置arm交叉編譯環(huán)境

    Ubuntu20.4配置arm交叉編譯環(huán)境

    我是在虛擬機(jī)中配置的,如果你的嵌入式設(shè)備足夠完成自己的編譯,可以不考慮虛擬機(jī)的。 新安裝的Ubuntu20.04系統(tǒng)請(qǐng)先執(zhí)行以下代碼 到aarch64下載對(duì)應(yīng)的aarch64的base鏡像。 之后執(zhí)行如下命令,創(chuàng)建armsys文件夾,之后將剛下載的鏡像拷貝到該文件夾下并且解壓 安裝一些必要的軟

    2024年02月06日
    瀏覽(37)
  • ubuntu20.4安裝配置ros系統(tǒng)(noetic)

    不同ubuntu版本對(duì)應(yīng)的ros版本 ubuntu版本 ros1版本 ros2版本 16.04 kinetic ardent 18.04 melodic dashing 20.04 noetic foxy ? 1、打開軟件與更新,切換ubuntu軟件源(國(guó)內(nèi)中科大源) 2、打開終端,添加ros軟件源(中科大鏡像站) 3、配置公鑰 ? 4、更新軟件源 ? 5、安裝ros系統(tǒng)(ps:命令中的noetic根

    2024年02月07日
    瀏覽(42)
  • ubuntu20.4 靜態(tài)網(wǎng)絡(luò)配置(保姆級(jí)圖文教程)

    ubuntu20.4 靜態(tài)網(wǎng)絡(luò)配置(保姆級(jí)圖文教程)

    之前一直使用的Linux系統(tǒng)都是centOs,突然換成Ubuntu之后不知道怎么配置網(wǎng)絡(luò),網(wǎng)上查找了很多資料都不可用,最后終于在一篇博客里看到了20.4版本的網(wǎng)絡(luò)配置教程,在此貼上鏈接,并記錄 Linux ubuntu20.04 網(wǎng)絡(luò)配置(圖文教程)_ubuntu20.04網(wǎng)絡(luò)配置_isOllie的博客-CSDN博客 系統(tǒng):ubu

    2024年02月05日
    瀏覽(30)
  • ubuntu 20.4完全卸載opencv 安裝opencv 4.4

    ubuntu 20.4完全卸載opencv 安裝opencv 4.4

    首先完全卸載刷機(jī)時(shí)自帶的opencv舊版本,不同版本版本會(huì)引起沖突。 1. 先到opencv編譯安裝的目錄build下 cd build sudo make uninstall cd .. sudo rm -r build 2.也可以手動(dòng)刪除,總之刪除干凈即可。 sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/sh

    2024年02月06日
    瀏覽(22)
  • Ubuntu20.4 docker運(yùn)行stable diffusion webui

    Ubuntu20.4 docker運(yùn)行stable diffusion webui

    系統(tǒng)環(huán)境 ubuntu20.04 nvida cuda顯卡驅(qū)動(dòng) 默認(rèn)已經(jīng)安裝成功 更新系統(tǒng)依賴: 確認(rèn)是否之前安裝過(guò)docker并卸載: 啟動(dòng)并查看docker運(yùn)行狀態(tài): 注:這一部步基本可以忽略,因?yàn)闆](méi)有使用國(guó)外dockerhub鏡像! 安裝 nvidia-docker2 包 安裝完成后需要重啟docker: 能輸出cuda相關(guān)信息安裝成功:

    2024年02月09日
    瀏覽(26)
  • AMD顯卡Ubuntu20.4系統(tǒng)下部署stable diffusion

    AMD顯卡Ubuntu20.4系統(tǒng)下部署stable diffusion

    今天來(lái)給大家做一個(gè)AMD顯卡使用stable diffusion的小白(硬核)教程。最近這段時(shí)間AI特別火,很多小伙伴看到各種大佬用AI畫的老婆非常精美(色情),弄的人心癢癢,自己也想畫一個(gè)心儀的老婆(畫作)。 太露骨的圖片不能放,你們懂得?。?但是很多小伙伴用的是AMD的獨(dú)立顯

    2024年02月03日
    瀏覽(28)
  • 基于ubuntu20.4安裝谷歌拼音中文輸入法

    基于ubuntu20.4安裝谷歌拼音中文輸入法

    1.首先命令行安裝漢語(yǔ)語(yǔ)言包 sudo apt-get install language-pack-zh-hans 執(zhí)行該命令后,系統(tǒng)就會(huì)自動(dòng)安裝所需要的漢語(yǔ)語(yǔ)言包 圖1 安裝漢語(yǔ)語(yǔ)言包 2.然后命令行安裝谷歌拼音輸入法 sudo apt-get install fcitx-googlepinyin 執(zhí)行該命令后,系統(tǒng)就會(huì)自動(dòng)安裝 fcitx 和 goolgepinyin 程序,也同時(shí)會(huì)安裝

    2024年02月06日
    瀏覽(21)
  • ubuntu20.4源碼安裝最新gcc(gcc V12.2)

    ubuntu20.4源碼安裝最新gcc(gcc V12.2)

    ????????Ubuntu20.4自帶的gcc為V9.4.0的版本,老版本的gcc存在不支持新版本C語(yǔ)言規(guī)范,在配置、編譯、安裝應(yīng)用軟件或工具時(shí),可能存在不能正確安裝的問(wèn)題。(比如:libpqxx-7.7.4在配置時(shí)要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介紹ubuntu20.4的系統(tǒng)下載最新

    2024年02月01日
    瀏覽(27)
  • Ubuntu20.4 WSL2 無(wú)法訪問(wèn)github終極解決方案

    Ubuntu20.4 WSL2 無(wú)法訪問(wèn)github終極解決方案

    sudo rm /etc/resolv.conf sudo bash -c \\\'echo \\\"nameserver 8.8.8.8\\\" /etc/resolv.conf\\\' sudo bash -c \\\'echo \\\"[network]\\\" /etc/wsl.conf\\\' sudo bash -c \\\'echo \\\"generateResolvConf = false\\\" /etc/wsl.conf\\\' ? ? ?

    2024年02月07日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包