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

Učitavanje slika iz Cards.dll biblioteke

[es] :: C++ programiranje :: Učitavanje slika iz Cards.dll biblioteke

[ Pregleda: 863 | Odgovora: 8 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maximus_1
Max Maximus

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



Profil

icon Učitavanje slika iz Cards.dll biblioteke08.09.2006. u 13:02

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.
08.09.2006. u 13:02 

kiklop74
Darko Miletić
Buenos Aires

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



Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke08.09.2006. u 13:33
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
08.09.2006. u 13:33 

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/ REL, MAG panci..
Lazarevac

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

Sajt: www.sezampro.yu/~agro.sof..


Profil

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

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


Tape loading error
09.09.2006. u 09:57 

kiklop74
Darko Miletić
Buenos Aires

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



Profil

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

Tko leti vrijedi
09.09.2006. u 17:24 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke10.09.2006. u 09:21
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.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
10.09.2006. u 09:21 

Duke Nukem
Miroslav Mitic
dipl.mas.ing - tehnolog za hidrauliku/ REL, MAG panci..
Lazarevac

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

Sajt: www.sezampro.yu/~agro.sof..


Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke11.09.2006. u 09:57
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
11.09.2006. u 09:57 

X Files
Vladimir Stefanovic
Pozarevac

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

Jabber: xfiles@elitesecurity.org
Sajt: www.antivari.com


Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke11.09.2006. u 14:38
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.

FREEWARE
Di rečnik, v1.0.058 (srp-eng/eng-srp priručni rečnik)
http://www.antivari.com
11.09.2006. u 14:38 

maximus_1
Max Maximus

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



Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke13.09.2006. u 17:18
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?
13.09.2006. u 17:18 

maximus_1
Max Maximus

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



Profil

icon Re: Učitavanje slika iz Cards.dll biblioteke15.09.2006. u 09:22
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.
15.09.2006. u 09:22 

[es] :: C++ programiranje :: Učitavanje slika iz Cards.dll biblioteke

[ Pregleda: 863 | Odgovora: 8 ]

Postavi temu Odgovori

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