Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Učitavanje slika iz Cards.dll biblioteke

[es] :: C/C++ programiranje :: Učitavanje slika iz Cards.dll biblioteke
(Zaključana tema (lock), by Goran Mijailovic)

[ Pregleda: 3300 | Odgovora: 8 ] > FB > Twit

Postavi temu

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
*.tel.net.ba.



Profil

icon Učitavanje slika iz Cards.dll biblioteke08.09.2006. u 13:02 - pre 214 meseci
Programiram jednu igru tipa solitare pa sam skužio da u cards.dll u system32 direktoriju postoje slike karata. Sad ne znam kako učitati te slike u svoj program dok se on izvodi.
 
0

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.iplannetworks.net.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke08.09.2006. u 13:33 - pre 214 meseci
Citat:
maximus_1: Programiram jednu igru tipa solitare pa sam skužio da u cards.dll u system32 direktoriju postoje slike karata. Sad ne znam kako učitati te slike u svoj program dok se on izvodi.


Nema potrebe da ucitavas slike. Cards.dll je napisan upravo kao dll sa funkcijama za olaksano kreiranje igara sa kartama.

Jedan primer upotrebe cards.dll za iscrtavanje karata u programu imas u projektu VCF. Source code je ovde:

http://svn.sourceforge.net/viewvc/vcf/trunk/vcf/examples/Cards/

Tebe zanimaju datoteke Cards.h, CardContainer.h i Cardclass.h

Ako ti se to ne dopada i bas hoces slike onda skini program resource hacker odavde http://www.angusj.com/resourcehacker/

i sa njime izvuci sve slike iz dll'a.


Tko leti vrijedi
 
0

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.absolutok.net.



+1 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke09.09.2006. u 09:57 - pre 214 meseci
Resouce Hacker je odlican

Gde samo nalazis linkove sa programcicima koje olaksavaju zivot programerima ?
Imas li jos neki za preporuku ???


Tape loading error
 
0

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke09.09.2006. u 17:24 - pre 214 meseci
Sve se nalazi na internetu. Google je tvoj najbolji prijatelj. Treba samo da imas jasnu ideju sta ti treba.

Tko leti vrijedi
 
0

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke10.09.2006. u 09:21 - pre 214 meseci
To oko cards.dll, bi trebalo da bude lako /netestirano/:

--- H ---
Code:

private:    // User declarations

        // ...
        HINSTANCE hi;
        int brojac;
        Graphics::TBitmap *pBitmap;
        // ...

public:        // User declarations
        // ...
        __fastcall ~TForm1();
       // ...
};


--- CPP ---
Code:

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
   brojac = 0;

   hi = 0;
   hi = LoadLibrary( "cards.dll" );

   pBitmap = 0;
   pBitmap = new Graphics::TBitmap();

   Button1->Caption = "levo";
   Button2->Caption = "desno";
}

__fastcall TForm1::~TForm1()
{
   if ( hi )
      FreeLibrary( hi );

   if ( pBitmap )
      delete pBitmap;
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if ( hi && pBitmap && brojac > 1 )
   {
      Caption = --brojac;
      pBitmap->LoadFromResourceID( int( hi ), brojac );
      Canvas->Draw( 0, 0, pBitmap );
    }
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   if ( hi && pBitmap && brojac < 52 )
   {
      Caption = ++brojac;
      pBitmap->LoadFromResourceID( int( hi ), brojac );
      Canvas->Draw( 0, 0, pBitmap );
    }
}


Dakle, trebaju ti dva Buttona (Button1 i Button2), koji ce predstavljati listanje karti
levo i desno. Ispis ide direktno na Canvas fome, pa izmena nije trajna. Ako hoces da
slika bude permanentna stavi je na TImage objekat.

Ovo sam sklepao na brzinu, pa ipak proveri da li ima neki bug.
 
0

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/
REL, MAG panciranje i zavarivanje bla
bla...
Lazarevac

Član broj: 38933
Poruke: 143
*.absolutok.net.



+1 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke11.09.2006. u 09:57 - pre 214 meseci
Lepo i efektno

Resource Hacker je pisan u Delphiju 3;

Autor je verovatno koristio isti nacin pristupa bmp resursima koje je pomenu XFiles.
Korisio je takodje i neke API funkcije za pristup StringTabelama, Menijima i sl.
Tape loading error
 
0

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke11.09.2006. u 14:38 - pre 214 meseci
Postoji jos nekoliko slicnih programa (cak i boljih):

PE Explorer

Resource Builder

XN Resource Editor

... pronadji ih na netu. Neki cak prepoznaju i DFM strukturu.
 
0

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
*.tel.net.ba.



Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke13.09.2006. u 17:18 - pre 214 meseci
Hvala na kodu, uspio sam učitati slike u program no pojavio se novi problem. Naime, slike su monokromatske sa namjerom da se napravi što manja biblioteka. E sad, ja sam se sjetio da bih mogao crtati po canvasu i popravit rubove i crvene okvire tako pretvoriti u crne. Napisao sam funkciju:

Code:
BOOL __fastcall Pixelize (TCanvas *cnv, TImage *img) {

    int x1, x2, x3, y1, y2, y3;

    x1 = img->Left + img->Width;;
    x2 = img->Left;
    y1 = img->Top + img->Height;
    y2 = img->Top;

    x3 = 5;
    y3 = 5;

    cnv->Brush->Style = bsClear;
    cnv->Pen->Color = clBlack;
    cnv->RoundRect(x1, y1, x2, y2, x3, y3);

    int p1, p2, p3, p4;

    p1 = img->Left;
    p2 = p1 + 2;
    p3 = img->Top;
    p4 = p3 + 2;

    cnv->Pen->Color = clGreen;

    cnv->MoveTo(p1, p3);
    cnv->LineTo(p2, p3);
    cnv->MoveTo(p1, p3);
    cnv->LineTo(p1, p4);

    p1 = img->Left + img->Width - 1;
    p2 = p1 - 2;
    p3 = img->Top;
    p4 = p3 + 2;

    cnv->MoveTo(p1, p3);
    cnv->LineTo(p2, p3);
    cnv->MoveTo(p1, p3);
    cnv->LineTo(p1, p4);

    p1 = img->Left;
    p2 = p1 + 2;
    p3 = img->Top + img->Height - 1;
    p4 = p3 -2;

    cnv->MoveTo(p1, p3);
    cnv->LineTo(p2, p3);
    cnv->MoveTo(p1, p3);
    cnv->LineTo(p1, p4);

    p1 = img->Left + img->Width - 1;
    p2 = p1 - 2;
    p3 = img->Top + img->Height - 1;
    p4 = p3 - 2;

    cnv->MoveTo(p1, p3);
    cnv->LineTo(p2, p3);
    cnv->MoveTo(p1, p3);
    cnv->LineTo(p1, p4);

    return TRUE;
}


koja savršeno radi ali samo ako se ne poziva u istoj funkciji u kojoj se učitava slika. Pa npr. u funkciji:



Code:
void __fastcall TfrmMain::Load_P(TImage * img, str pic)
{
    if (pic == "empty" ||
        pic == "deck1" ||
        pic == "deck2" ||
        pic == "deck3") {

        img->Transparent = TRUE;
    } else {
        img->Transparent = FALSE;
    }


    int CardNumber = GetCardNumberFromPicName(pic);
    if (CardNumber != -1) {
        LoadCardFromDll(img, CardNumber, hi);

        // TREBA još pixelizirat rubove

        Pixelize (frmMain->Canvas, img);

    } else {
        throw "Pogreška pri učitavanju slike iz Cards.dll";
    }
}


neće uopće da radi ali ako stavim još jedno dugme i onda na OnClick eventu pozovem Pixelize() onda uspije.

U čemu je problem?
 
0

maximus_1
Max Maximus

Član broj: 46848
Poruke: 277
*.tel.net.ba.



Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke15.09.2006. u 09:22 - pre 214 meseci
Riješio sam problem. Razlog zašto se nisu iscrtavala okviri je zato što sam crtao po frmMain canvasu a slike bi uvijek ostale ispred pa se crte ne bi vidjele. Probao sam crtati po canvasu svake slike (TImage) ali opet problem jer sam mogao crtati samo monokromatskim bojama. Da bih to riješio, pretvorio sam slike u 24 bitne i crtao pa canvasu. Možda i nije baš najpopularnija metoda ali mi je upalila.
 
0

[es] :: C/C++ programiranje :: Učitavanje slika iz Cards.dll biblioteke
(Zaključana tema (lock), by Goran Mijailovic)

[ Pregleda: 3300 | Odgovora: 8 ] > FB > Twit

Postavi temu

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.