Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi] Nie działa kopiowanie TPrinter.Canvas

24 Sty 2010 23:30 1648 3
  • Poziom 38  
    Drukuję pewien obrazek przy użyciu klasy Printer. Wygląda to tak
    Code:

    Printer.BeginDoc;
        //Wczytanie szablonu
        Printer.Canvas.StretchDraw(Rect(100, 10, 4900, 3200), B);

        //Wpisanie danych do wydruku
        Printer.Canvas.TextOut(100+30*8, 60*8, ComboBox1.Text);
        Printer.Canvas.TextOut(100+300*8, 60*8, 'jakiś napis');
        Printer.Canvas.TextOut(100+30*8, 130*8, 'Od '+DateToStr(DateTimePicker1.Date)+' do '+DateToStr(DateTimePicker1.Date));
        Printer.Canvas.TextOut(100+300*8, 130*8, Edit3.Text');

        for i := 0 to Memo2.Lines.Count - 1 do
        begin
          Printer.Canvas.TextOut(100+30*8, 8*(190+i*12), Memo2.Lines[i]);
        end;

        //Dodatkowa kopia
        Printer.Canvas.CopyRect(Rect(100, 3300, 4900, 6500), Printer.Canvas, Rect(100, 10, 4900, 3200));
       

    Printer.EndDoc;


    Problem jest w tym miejscu:
    Code:

     //Dodatkowa kopia
        Printer.Canvas.CopyRect(Rect(100, 3300, 4900, 6500), Printer.Canvas, Rect(100, 10, 4900, 3200));


    Teoretycznie powinna powstać kopia fragmentu Canvasa, ale niestety nic się takiego nie dzieje :( Ten kod rysuje coś na połowie kartki, potem ma być kopiowany na drugą połowę (żeby się wydrukował w 2 egzemplarzach na tej samej stronie). Co robię nie tak?

    Poprawiłem tytuł. - arnoldziq
  • Poziom 38  
    Jest możliwe, żeby Printer.Canvas był "tylko do zapisu" ?
  • Poziom 42  
    Szczerze to nie wiem, nie badałem. Ale jest możliwe że ta Canva nie jest Canvą. Jak również to, że jest blokowana przez BeginDoc. Jak na bitmapie to wygląda?
    A tak przy okazji - lepiej nie robić i tak takiego kopiowania, gdyż tracimy na wektorowym zapisie - dużo lepszym rozwiązaniem jest stworzenie funkcji rysującej i podanie jej za parametry lokalizację i Canvę.