IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: winForms - roztahování bitmapy

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Tomáš Brůna
Tvůrce
Avatar
Tomáš Brůna:27.7.2016 18:56

Ahoj,
zkouším si hrát s vykreslováním na plátno ale při vykreslení je obrázek větší než ten původní.
Např. mám 64x64 obrázek a on se vykreslí ve velikosti 84x84.
Nevíte čím by to mohlo být?
Tady je kód kterým vykresluju:

private void Form1_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.Clear(this.BackColor);

            for (int i = 0; i < this.objekty.Count; i++)
            {
                e.Graphics.DrawImage(objekty[i].sprite, objekty[i].x, objekty[i].y);
            }
        }

Třída Objekt.cs

public Bitmap sprite;
       public int x, y;
       public int speed = 0;
       public int direction = 0;

       public Object(Bitmap sprite, int x, int y)
       {
           this.sprite = sprite;
           this.x = x;
           this.y = y;
       }

Předem díky za každou pomoc :)

Editováno 27.7.2016 18:57
Odpovědět
27.7.2016 18:56
Vi veri universum vivus vici
Avatar
David Oczka
Tvůrce
Avatar
Odpovídá na Tomáš Brůna
David Oczka:30.7.2016 8:06

Ahoj. Nejsem si jistý, čím to může být, nicméně, je lepší vždy vykreslovat obrázek se zadanou velikostí. :-`

Použij přetížení metody DrawImage:

DrawImage(Image image, int x, int y, int width, int height)

V tvém případě: ;-)

e.Graphics.DrawImage(objekty[i].sprite, objekty[i].x, objekty[i].y, objekty[i].sprite.Width, objekty[i].sprite.Height);
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
30.7.2016 8:06
Avatar
Tomáš Brůna
Tvůrce
Avatar
Odpovídá na David Oczka
Tomáš Brůna:30.7.2016 8:50

Paráda, díky :-) . Jinak predtim jsem to vyresil prictenim 34, 38% velikosti obrazku.

Width = sprite.x + (sprite.width × 0.3438 + sprite.width);

Ale rozumne to nebylo :-D

Nahoru Odpovědět
30.7.2016 8:50
Vi veri universum vivus vici
Avatar
Tomáš Brůna
Tvůrce
Avatar
Tomáš Brůna:30.7.2016 8:51

Odpoved ti oznacim az budu na pc, na mobilu mi to nejde.

Nahoru Odpovědět
30.7.2016 8:51
Vi veri universum vivus vici
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 4 zpráv z 4.