Announcement

Collapse
No announcement yet.

TChart

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TChart

    Hallo,<br>
    ich möchte aus einem TChart das Bitmap an eine andere Komponente weiter geben. Wie komme ich an das Bitmap der TChart Komponente?<br>
    Helmut

  • #2
    Du könntest es zum Beispiel über CopyToClipboardBitmap in die Zwischenablage kopieren und in der anderen Komponente einfüge

    Comment


    • #3
      Hallo, <br>
      ja das habe ich schon versucht und geht.<br>
      Da die Anwendung aber auf einem Server laufen soll, und diese entstandenen Bitmaps als Jepg in eine Datenbank ablegen soll, ist diese Lösung leider nicht brauchbar. Es handelt sich um eine Webanwendung, die diese Bitmaps bereit stellt.<br>
      Eine Lösung über ein File, ist auch nicht das richtige. <br>
      Es müsste doch möglich sein, das Bitmap auch direkt aus zu lesen?<br>
      Helmu

      Comment


      • #4
        Moin Helmut,<br>
        TChart hat eine Canvas Eigenschaft. Ein Canvas hat ein Handle. Deshalb,<br>
        kannst Du BitBlt verwenden, um das Chart in eine Bitmap zu kopieren.<br>
        <pre>
        <font face="Verdana" size="1" color="#000000">procedure TForm1.Button1Click(Sender: TObject);
        var
        Bmp : TBitmap;
        begin
        Bmp:=TBitmap.Create;
        Try
        Bmp.Width:=Chart1.Width;
        Bmp.Height:=Chart1.Height;
        BitBlt(Bmp.Canvas.Handle,0,0,Bmp.Width,Bmp.Height, Chart1.Canvas.Handle,0,0,SRCCOPY);
        Image1.Picture.Bitmap.Assign(Bmp); // damit man was sieht
        Finally
        Bmp.Free;
        end;
        end;</font>
        </pre&gt

        Comment


        • #5
          Danke<br>
          hat geflupt!!<br>
          Das einzige was noch zu sagen ist, ist das man "Chart.Canvas.ReferenceCanvas" benutzen muß.<br>
          und tschüüs<br>
          Helmu

          Comment


          • #6
            Hallo Helmut,<br>ich habe den Code ausprobiert. Er läuft. Es kann vielleicht sein, dass man über ReferenceCanvas nur das Diagramm erhält. Mit Canvas erhält man die komplette "Komponente"

            Comment


            • #7
              Tja ,<br>
              leider geht es doch nicht. Chart muss auf dem Bildschirm sichbar sein,
              um die Pixel zu kopieren!<br>
              Da es ja eine Serveranwendung ist, kann dies aber nicht sichergestellt werden.<br>
              Wenn ich den Chart.Visible := false setze geht es schon nicht mehr!
              Was tun??<br><br>

              Was ich gerade mal versucht habe ist, über die Zwischenablage zu gehen, auch wenn Chart.Visible := false steht, geht dies??<br>

              Helmu

              Comment


              • #8
                Moin Helmut,<br>
                dann versuch's doch mal so:<br>
                <pre>
                <font face="Verdana" size="1" color="#000000">procedure TForm1.Button2Click(Sender: TObject);
                var
                Bmp : TBitmap;
                begin
                Bmp:=TBitmap.Create;
                Try
                Bmp.Width:=Chart1.Width;
                Bmp.Height:=Chart1.Height;
                <font face="Verdana" size="1" color="#408080"><b> Chart1.PrintPartialCanvas(Bmp.Canvas,Chart1.Client Rect);
                </b></font> Image1.Picture.Bitmap.Assign(Bmp); // damit mann was sieht
                Finally
                Bmp.Free;
                end;
                end;
                </font></pre&gt

                Comment


                • #9
                  So gehts,<br>
                  vielen Dank <br>
                  Helmu

                  Comment

                  Working...
                  X