Autor Wątek: szybkie CLONE w C#  (Przeczytany 2427 razy)

Offline bladus

  • Użytkownik

# Listopad 22, 2006, 19:57:39
witam
mam takie pytanie w związku z C#.
Mam plik z grafikami ikonek do gry o wymiarze powiedzmy 20 na 20 ikonek (kazda to 64 na 64 pixele). Pobieram z tego pliku powiedzmy ikonke miecza o polozeniu 2,6. Korzystam z funckji CLONE calej bitmapy ktora jest cholernie wolna... czy mozna jakos wyciągnąc z tego pliku pojedyncze ikonki szybsza metoda ?? VS 2005 .Net 2.0

pozdrawiam

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline counterClockWise

  • Użytkownik

# Listopad 24, 2006, 15:07:40
Nie do końca rozumiem pytanie. Z resztą Clone robi kopię całego obiektu, a Ty chyba chcesz szybko wyciąć fragment z bitmapy, tak? Czy coś nie kapuję?

Możesz nie tworzyć dodatkowych bitmap, tylko przechowywac tę jedną i rysować za pomocą DrawImage <- podając odpowiedni lewy górny róg i width/height. Ciężko mi wpaść na szybszy pomysł używając tylko API .NET-owego.
« Ostatnia zmiana: Listopad 24, 2006, 15:10:23 wysłana przez counterClockWise »

Offline KrystianD

  • Użytkownik
    • http://krystiand.net

# Listopad 24, 2006, 15:16:05
Cytuj
Nie do końca rozumiem pytanie. Z resztą Clone robi kopię całego obiektu, a Ty chyba chcesz szybko wyciąć fragment z bitmapy, tak? Czy coś nie kapuję?
Do Clone'a też można podać współżędne kopiowanego prostokąta
public Bitmap Clone (Rectangle rect, PixelFormat format);
« Ostatnia zmiana: Listopad 24, 2006, 15:17:57 wysłana przez kdteam »

Offline counterClockWise

  • Użytkownik

# Listopad 24, 2006, 17:14:15
No tak - zapomniałem, że Bitmapa ma nadpisany Clone który dziedziczy z Object. No ale chyba nie ma sensu tworzyć nowych obiektów, jeżeli zależy Ci na szybkości. Draw Image jest dosyć szybkie.

A jeżeli chcesz używać Clone to użyj tylko raz przy wczytywaniu gry - przecież jak coś wykonuje się tylko raz a nie dynamicznie czy wręcz potencjalnie w każdej klatce to nie musi być super wydajne :)
« Ostatnia zmiana: Listopad 24, 2006, 17:17:11 wysłana przez counterClockWise »