Rozkouskovani obrazku a vypsani – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Rozkouskovani obrazku a vypsani – .NET – Fórum – Programujte.comRozkouskovani obrazku a vypsani – .NET – Fórum – Programujte.com

 

Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #1
-
0
-

Zdravim.

Mam takovyto Form

public partial class TileSet : Form
{
  public TileSet(int index)
  {
    InitializeComponent();
    LoadPath(index);
  }

  public void LoadPath(int index)
  {
    string[] Cesty = new string[2];
    Cesty[0] = @"D:\Users\Mutagen\Desktop\XNAGame\Texture\TileSet_One.png";
    Cesty[1] = @"D:\Users\Mutagen\Desktop\XNAGame\Texture\TileSet_Two.png"    Cesty[2] = @"D:\Users\Mutagen\Desktop\XNAGame\Texture\TileSet_Three.png";

    for (int i = 0; i < Cesty.Length; i++)
    {
      if ((index - 1) == i)
      {
        LoadTile(Cesty[i]);
      }
    }
  }

  private void LoadTile(string Cesta)
  {
    Image Img = Image.FromFile(Cesta, true);

    int x = 0;
    int y = 0;
    int Width = 32;
    int Height = 32;

    int ImageWidth = Img.Width / Width;
    int ImageHeight = Img.Height / Height;

    for (int a = 0; a < ImageHeight; a++)
    {
      for (int i = 0; i < ImageWidth; i++)
      {
        pictureBox1.Image = CutImage(Cesta, Width, Height, x, y);
        x += Width;
      }
    y += Height;
    }
  }

  private Image CutImage(string Img, int Width, int Height, int x, int y)
  {
    try
    {
      Image Obr = Image.FromFile(Img);
      Bitmap bmp = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);

      bmp.SetResolution(Width, Height);

      Graphics gfx = Graphics.FromImage(bmp);

      gfx.SmoothingMode = SmoothingMode.AntiAlias;
      gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
      gfx.PixelOffsetMode = PixelOffsetMode.HighQuality;
      gfx.DrawImage(Obr, new Rectangle(0, 0, Width, Height), x, y, Width, Height, GraphicsUnit.Pixel);

      Obr.Dispose();
      bmp.Dispose();
      gfx.Dispose();

      return bmp;
    }

    catch (Exception ex) { MessageBox.Show(ex.Message); return null; }
  }
}

Z MainFormu to volam takhle

private void TileSet1_Click(object sender, EventArgs e)
{
	TileSet TS = new TileSet(1);
        TS.MdiParent = this;
        TS.Show();
}

A na radku TS.Show(); mi to vypise error Parameter is not valid.

Nevite kde mam chybu ?

Nahlásit jako SPAM
IP: 89.190.90.–
17. 11. 2011   #2
-
0
-

#1 Mutagen
Nevím jistě. Máš u formuláře (this) nastavenou vlastnost IsMdiContainer?

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #3
-
0
-

#2 djanosik
Ano ono me to funguje pokud to mam jenom okno ... Ale jakmile sem tam napsal tenhle kod tak to hazi tenhle error

Nahlásit jako SPAM
IP: 89.190.90.–
17. 11. 2011   #4
-
0
-

Aha, tak to netuším.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #5
-
0
-

#4 djanosik
Tak sem zistil ze mi to pise chybu u tohodle asi proto me to u show hlasilo -> pictureBox1.Image = CutImage(Cesta, Width, Height, x, y); me to pise Parameter is not valid;

Nahlásit jako SPAM
IP: 89.190.90.–
17. 11. 2011   #6
-
0
-

#5 Mutagen
Tak tam jsou zřejmě špatné rozměry obrázku, to už se dá s debuggerem jednoduše zjistit.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #7
-
0
-

#6 djanosik
Pomoci Debuggeru vypada vse uplne normalne ... Jen jestli nemam tu fci CutImage spatne napsanou nebo tak nevim ...

Nahlásit jako SPAM
IP: 89.190.90.–
17. 11. 2011   #8
-
0
-

#7 Mutagen
Dojde tam k výjimce a s debuggerem můžeš přesně zjistit kde a při jakých hodnotách. Na základě toho můžeš uvažovat nad tím, co je špatně. Pokud nevidíš, kde přesně výjimka vzniká, tak zkus dočasně vyhodit ten try..catch.

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
zlz
~ Anonymní uživatel
634 příspěvků
17. 11. 2011   #9
-
0
-

V LoadPath máš pole jen pro 2 cesty.
V LoadTile máš ten cyklus nějaký divný.
V CutImage asi nechceš zlikvidovat bmp.

Nahlásit jako SPAM
IP: 213.211.51.–
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #10
-
0
-

Vyhodit by nevadilo kdyby se nasel jinej zpusob jak rozkouskouvat obrazek.

Proc divnej? Rozdelim si Obr po 32pixelu vypocitam sirku vysku a for se opakuje vlastne jen tolikrat (ImWidth / Width)

a pricita si 32pixelu k ose x a kdyz dojde nakonec tak si rpicte 32 pixelu k ose y a jde znova akroad jinou lajnu.

Try, catch vyhozeno a porad to samy. Nevim co s tim dal... Jedine to nejak prepsat ale nenapada me jak

Nahlásit jako SPAM
IP: 89.190.90.–
zlz
~ Anonymní uživatel
634 příspěvků
17. 11. 2011   #11
-
0
-

To s tím cyklem byla vedlejší poznámka.

Chyba je v těch zbývajících dvou věcech.

Nahlásit jako SPAM
IP: 213.211.51.–
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #12
-
0
-

#11 zlz
A co treba misto poznamek me nejak nasmerovat na spravnej smer jak to opravit?

Chyba je jenom v tom CutImage proste pise to Parameter is not valid a nevim proc. s timhle errorem se setkavam poprvy.

Nahlásit jako SPAM
IP: 89.190.90.–
17. 11. 2011   #13
-
0
-

#12 Mutagen
Je těžké se dostat k dalším informacím :) 

Nahlásit jako SPAM
IP: 91.217.52.–
Dušan Janošík | web: djanosik.cz, @djanosik
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #14
-
0
-

#13 djanosik
Chjo ... A nejaka jina fce co dokaze rozparsovat obrazek ?

Nahlásit jako SPAM
IP: 89.190.90.–
zlz
~ Anonymní uživatel
634 příspěvků
17. 11. 2011   #15
-
0
-

#12 Mutagen
Tak snad víš, cos tam napsal. A i kdyby ne, tak tam používáš jen pár funkcí a jejich dokumentaci projdeš během chvilky. Likvidací bmp jsem samozřejmě myslel to bmp.Dispose() !

Nahlásit jako SPAM
IP: 213.211.51.–
Mutagen
~ Anonymní uživatel
549 příspěvků
17. 11. 2011   #16
-
0
-

#15 zlz
No jo ... Dik ;)

Nahlásit jako SPAM
IP: 89.190.90.–
Marvin
~ Anonymní uživatel
23 příspěvků
23. 11. 2011   #17
-
0
-

public void LoadPath(int index)

chybý InitializeComponent();

Nahlásit jako SPAM
IP: 90.176.13.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 40 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý