Graphics::TBitmap nicht oben links beginnen



  • Ich zeichne mit Graphics::TBitmap auf den Desktop bzw. auf den Bildschirm. Kann ich dabei iwie einstellen, dass der nicht oben links anfangen soll, zu zeichnen, sondern an einem bestimmten pixel?

    Oder kann man die Hintergrundfarbe durchsichtig machen?

    Aktueller Quelltext

    HDC DC;
      TCanvas * FCanvas = new TCanvas();
      Graphics::TBitmap *BrushBmp = new Graphics::TBitmap;
    //Hier angeben, wo der Startpunkt angegeben wird. z.B. (150,150) oder Hintergrundfarbe durchsichtig
      BrushBmp->Width = 50;
      BrushBmp->Height = 50;
    
    //Beispiel malen
      BrushBmp->Canvas->Brush->Color = clRed;
      BrushBmp->Canvas->Ellipse(0,0,50,50);
    
      DC = GetWindowDC(GetDesktopWindow());
      FCanvas->Handle = DC;
      FCanvas->Draw(0,0,BrushBmp);
    
      ReleaseDC(0, DC);
    
      delete BrushBmp;
      delete FCanvas;
    


  • Hallo

    Wenn ich dich richtig verstehe...
    TBitmap hat die Eigenschaft TransparentColor, wo du die Farbe des unerwünschten Hintergrundbildes einträgst.

    bis bald
    akari



  • hmm.., das mit Transparent funzt bei mir nicht richtig. Ich bin aber auf einem anderen weg zur Lösung gekommen:
    in Zeile 14 steht:

    FCanvas->Draw(0,0,BrushBmp);
    

    Da kann ich einfach bestimmen, wo das hingemalt werden soll.
    z.B.:

    FCanvas->Draw(50,50,BrushBmp);//Startpixel: (50/50)
    

    Aber vllt kannste mir mit der Transparenz trotzdem helfen. Ich hab BC++B 1.
    Und wie genau muss ich das da hinschreiben?
    So gehts auf jeden fall nicht:

    BrushBmp->Transparent = true;
    BrushBmp->TransparentColor = clWhite;
    

    Fehler:
    Transparent is not a member of Graphics::TBitmap.

    Wenn ich die 1. Zeile auskommentiere, sagt er:
    Graphics::TBitmap::TransparentColor is not accessible

    In der Hilfe steht, dass TransparentColor ReadOnly ist. Aber wie soll ich dann einen Transparenten Farbwert zuweisen?



  • Noch ne Frage:

    TColor Color = 0x00FF0000;
    BrushBmp->Canvas->Brush->Color = Color;
    BrushBmp->Canvas->Rectangle(0,0,width,height);
    

    Sollte so eigentlich nicht das Rechteck in Rot gezeichnet werden?
    Es wird aber schwarz gezeichnet. KP warum



  • Also der BCB 1 ist ja schon sehr veraltet. Wenn du z.B. XP-konforme Programme erstellen willst, dann solltest du dir eine neuere Version holen (z.B. CodeGear TurboExplorer 2007). (Nicht wundern, daß es nicht mehr Borland heißt -)

    Denn der BCB1 hatte noch keine Eigenschaft Transparent (erst ab Version 3).

    Und bzgl. des Rechteckes ist es so, daß der Rahmen mit der Stift-Farbe (Pen) und der Pinsel (Brush) zum Füllen benutzt wird.
    Warum es trotzdem bei dir schwarz ist, kann ich dir direkt nicht sagen. Schau dir mal im Debugger die Werte von Canvas->Pen und Canvas->Brush an.



  • Th schrieb:

    Wenn du z.B. XP-konforme Programme erstellen willst, dann solltest du dir eine neuere Version holen (z.B. CodeGear TurboExplorer 2007). (Nicht wundern, daß es nicht mehr Borland heißt -)

    Das befürworte ich zwar uneingeschränkt, jedoch gibt es von C++Builder 2007 keine Turbo Explorer-Edition, sondern nur von C++Builder 2006. Für Delphi und C++Builder 2008 ist allerdings wieder eine geplant.



  • TColor Color = 0x00FF0000;
    BrushBmp->Canvas->Pen->Color = Color;
    BrushBmp->Canvas->Rectangle(0,0,width,height);
    

    So Funktioniert es mit der Farbe. THX 😃

    Mit dem TurboExplorer werd ich mich mal n bissl beschäftigen. THX



  • Sorry audacia,

    habe mich verschrieben, meinte natürlich CodeGear TurboExplorer 2006.

    Jetzt wo wir schon bald 2008 haben, ist ja selbst 2007 schon fast veraltet...


Anmelden zum Antworten