linia ciagła zamiast lini z kropek StretchDraw()

0

Witam, muszę narysować linie stworzoną z kropek i wydrukować. Problem polega na tym że jak grafikę ( metaplik ) zapisze do pliku to linia jest przerywana a jak ten obraz przenoszę na płótno drukarki to po wydrukowaniu mam linie ciągłą. W czym problem ?

Przykladowy kod:

TMetafile *Mf;
TMetafileCanvas *Mfc;
TPrinter *Prn;
RECT Rect;
Graphics::TBitmap *Bmp;

Prn = new TPrinter();
Rect.top = 0;
Rect.left = 0;
Rect.right = Prn->PageWidth;
Rect.bottom = Prn->PageHeight;


Mf = new TMetafile();
Mf->Width = Rect.right;
Mf->Height = Rect.bottom;

Mfc = new TMetafileCanvas( Mf, 0 );


Mfc->MoveTo(0,0);
Mfc->Pen->Style = psDot;
Mfc->Pen->Width = 1;
Mfc->LineTo(Rect.right,Rect.bottom);
delete Mfc;

Mf->SaveToFile("c:\\test.emf");


Prn->BeginDoc();
Prn->Canvas->StretchDraw( Rect, Mf );
Prn->EndDoc();

delete Prn;
0

w pliku emf (wmf) nie jest zapisywany obrazek jako taki tylko polecenia, które ten obrazek tworzą. To raz. Dwa to to, że styl psDot działa TYLKO dla lini o grubości 1 piksel, przy gróbszych liniach jest to linia ciągła - ot taki psikus MSa. Jeśli teraz drukujesz ten plik w powiększeniu to tak naprawdę wykonywane jest Mfc->LineTo(Rect.right,Rect.bottom); ze stylem psDot ale z Width > 1 i masz linię ciągłą

0

EMF to jest plik wektorowy o ile sie nie myle i to to mi chodzi aby byla mozliwosc zwiekszania obrazka bez utraty jakosci

Doszedlem do tego ze problem wynika podczas wywolania StretchDraw(), wiem ze width musi byc 1 z helpa

Pozostaje tylko jeden problem JAK SOBIE Z TYM PORADZIC

0

od razu rysować większe a nie powiększać potem

1 użytkowników online, w tym zalogowanych: 0, gości: 1