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?