Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Pascal: Nuottiviivastojen tulostus...

AK [24.07.2002 20:57:55]

#

Elikkäs, olen jo jonkin aikaa tehnyt Delphillä ohjelmaa, joka tulostaa paperille nuottiviivastoja. Ohjelmassa annetaan joitakin säätöjä käyttäjälle, kuten nuottiviivastojen määrä/sivu ja tulostettavien sivujen määrän. Ongelmana on kuitenkin juuri tuo tulostaminen, Delphihän tulostaa tunnetusti kuvat paljon pienempänä kuin mitä ne ovat "luonnossa", joten sain käsiini koodin, joka suhteuttaa kuvan kirjoittimen resoluutioon:

procedure TForm1.Button1Click(Sender: TObject);
var
        ScaleX, ScaleY:   Integer;
        R:  TRect;
        R2: TRect;
        begin
        Printer.BeginDoc;
        with Printer do
        try
          ScaleX :=
            GetDeviceCaps(Handle, logPixelsx) div PixelsPerInch;
          ScaleY :=
            GetDeviceCaps(Handle, logPixelsY) div PixelsPerInch;
          R := Rect(250, 0, Image1.Picture.Width * ScaleX,
            Image1.Picture.Height * ScaleY);
          Canvas.StretchDraw(R, Image1.Picture.Graphic);
          finally
            EndDoc;
end;
end;

Mutta mitenkäs onnistuukin vaikkapa kymmenen nuottiviivaston tulostaminen? Olen jo kokeillut toistaa koodia erinimisillä muuttujilla, mutta tuloksetta. Tietenkin, jos joku tietää helpomman tavan niin sanokoon. (joku oli tehnyt mm. Visual Basicilla tämän tapaisen ohjelman)

Antti Laaksonen [25.07.2002 22:59:04]

#

Itse en Delphiä osaa, mutta luulisin, että paras tapa olisi tehdä for-looppi sopivalla askeleella, joka nostaa joka kerralla printterille kopioitavan kuvan kohdan y-arvoa.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta