Avatar
matesax
Redaktor
Avatar
matesax:

Dobrý den,
nevím co přesně zadat, proto se ptám zde - potřeboval bych návod na vytvoření dock toolbaru pro soubory. Takovou menší plochu. Děkuji

 
Odpovědět 26.5.2012 19:10
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Ahoj,
umísťování aplikací uděláš napříkad takto:
http://www.jonasjohn.de/…-example.htm
Poté si je zapíšeš do souboru -> jejich pozici, jméno a cestu k souboru, který se má spustit. To pak budeš vždy při spouštění načítat.

Nahoru Odpovědět 26.5.2012 20:52
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

A šlo by to i jako ikonu? Resp - jak získat ikonu z onoho souboru. Děkuji

 
Nahoru Odpovědět 26.5.2012 21:01
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Tak určitě.
Zkus toto, to používám v IconChangeru:

[DllImport("shell32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
private static extern int PickIconDlg(IntPtr hwndOwner, System.Text.StringBuilder lpstrFile, int nMaxFile, ref int lpdwIconIndex);

[DllImport("shell32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
public static extern IntPtr ExtractIcon(IntPtr hInstance, string strFileName, uint uiIconIndex);

private void button2_Click(object sender, EventArgs e)
{
        string iconfile;
        int iconindex = 0;
        int retval;
        System.Text.StringBuilder sb;

        iconfile = Environment.GetFolderPath(Environment.SpecialFolder.System);
        iconfile = iconfile + @"\shell32.dll";
        sb = new System.Text.StringBuilder(iconfile, 500);
        retval = PickIconDlg(this.Handle, sb, sb.Capacity, ref iconindex);
        iconfile = sb.ToString();
        path = iconfile + "," + iconindex;
        Graphics g = pictureBox1.CreateGraphics();
        g.Clear(this.BackColor);
        g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
        textBox1_TextChanged(sender, e);
}

public static Icon extractIcon(string strPath, int nIndex)
{
        Icon icon = null;
        IntPtr hIcon = ExtractIcon(IntPtr.Zero, strPath, (uint)nIndex);
        if (IntPtr.Zero != hIcon)
        {
                icon = Icon.FromHandle(hIcon);
        }
        return icon;
}
Nahoru Odpovědět 26.5.2012 21:10
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Ten uint index - o co jde? Mě to totiž nejde - dal jsem ho 1 (možná v tom chyba není,...), ... Děkuji

 
Nahoru Odpovědět 1.6.2012 20:01
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Nemusíš nic nastavovat. To jen zkopíruješ. Pak tlačítko, kterému přiřadíš ten kód co je v ukázce bude vyvolávat okýnko pro výběr ikonky.

Nahoru Odpovědět 2.6.2012 21:04
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Vyřešeno:

pictureBox1.Image = Image.FromHbitmap(Icon.ExtractAssociatedIcon(cesta).ToBitmap().GetHbitmap());

Jen se nepřenesou průhledné pixely (bitmapa nemá alfakanál) - není jiná možnost? Děkuji.

 
Nahoru Odpovědět 2.6.2012 21:10
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Jako ty chceš jen vytáhnout ze souboru ikonku jo?
Tak to pak:

Icon.ExtractAssociatedIcon()

http://msdn.microsoft.com/…tedicon.aspx

Nahoru Odpovědět 2.6.2012 21:20
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

JJ - ale to už mám - mě jde teď o ten alfakanál,...

 
Nahoru Odpovědět 2.6.2012 21:22
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

A tam není možnost dát si to jako png?
Nebo to vykresluj přes Graphic:

g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
Nahoru Odpovědět 2.6.2012 21:29
Čím více času dostaneš, tím méně ho máš.
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

Díval si se na ten příklad co jsem ti posílal?

Graphics g = pictureBox1.CreateGraphics();
       g.Clear(this.BackColor);
       g.DrawIcon(extractIcon(iconfile, iconindex), new Rectangle());
Nahoru Odpovědět 2.6.2012 21:36
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

No jo - ale nevím co s tím. :) Jak to vykreslit v pictureboxu? Děkuji.

 
Nahoru Odpovědět 2.6.2012 22:00
Avatar
Odpovídá na matesax
David Jančík [sczdavos]:

A proč to nemůžeš udělat tak jak sem ti napsal? Sem ti poslal hotový řešení stačí to jen zkopírovat. Tady se můžeš podívat jak to funguje:
http://www.itnetwork.cz/index.php?…

Nahoru Odpovědět 2.6.2012 22:09
Čím více času dostaneš, tím méně ho máš.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Jančík [sczdavos]
matesax:

Vyřešeno :) :

pictureBox1.Image = Icon.ExtractAssociatedIcon(cesta).ToBitmap();
 
Nahoru Odpovědět 3.6.2012 6:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.