Stránka 1 z 1

Notifikační ikona

Napsal: 24 úno 2012 19:41
od Zeppelin
Ahoj, použil jsem kód z netu který vykresluje číslo jako notifikační ikonu. Funguje to dobře ale tak po hodině celá aplikace spadne protože se zahltí ramka. Našel jsem že to mají všichni-ten problém. Ale "bitmap.Dispose();" ani "notifyIcon1.Dispose();" nepomůže a navíc to "notifyIcon1.Dispose();" způsobí "blikání ikony". Nevíte jak jinak to odladit? Děkuju.

Kód: Vybrat vše

      void ShowText(string text, Font font, Color col)
      {
          Bitmap bitmap = new Bitmap(16, 16);
             Brush brush = new SolidBrush(col);
           Graphics graphics = Graphics.FromImage(bitmap);
                graphics.DrawString(text, font, brush, 0, 0);
 
             IntPtr hIcon = bitmap.GetHicon();
             Icon icon = Icon.FromHandle(hIcon);
             notifyIcon1.Icon = icon;
             bitmap.Dispose();
      }

Re: Notifikační ikona

Napsal: 25 úno 2012 06:50
od faraon
A něco jako brush.Dispose() by použít nešlo? Alokuješ tam dvě věci, ale uvolňuješ jen jednu... Předpokládám že to je v C++.

Re: Notifikační ikona

Napsal: 25 úno 2012 11:27
od Zeppelin
Tak jsem to zkusil a je to stejné. Je to C#

Re: Notifikační ikona

Napsal: 26 úno 2012 04:31
od CZechBoY
zkus Disposnout ještě tu graphics, nebo úplně všechno..

Re: Notifikační ikona

Napsal: 26 úno 2012 12:20
od Zeppelin
Pořád stejné :-(

Kód: Vybrat vše

      void ShowText(string text, Font font, Color col)
      {
          NotifyIcon notifyIcon1 = new NotifyIcon();
          notifyIcon1.Visible = true;
          Bitmap bitmap = new Bitmap(16, 16);
             Brush brush = new SolidBrush(col);
                   Graphics graphics = Graphics.FromImage(bitmap);
                graphics.DrawString(text, font, brush, 0, 0);
 
             IntPtr hIcon = bitmap.GetHicon();
             Icon icon = Icon.FromHandle(hIcon);
             notifyIcon1.Icon = icon;
         
             Thread.Sleep(10000);
             bitmap.Dispose();
             brush.Dispose();
             graphics.Dispose();
             notifyIcon1.Dispose();
      }

Re: Notifikační ikona

Napsal: 26 úno 2012 13:59
od CZechBoY
asi si to budu muset vyzkoušet, můžeš poslat celej kod a co to má dělat?
já bych řekl, že jen nakreslit nějakej text do tý ikonky.. nejspíš nějakej měřič teploty nebo tak? :)

jak často se volá ta funkce ShowText?

Re: Notifikační ikona

Napsal: 04 bře 2012 15:14
od Zeppelin
Ta funkce se volá když něco příjde ze seriového portu. Asi to nevyzkoušíš protože nemáš to co tam poslí ty čísla :-)