Logo auf Bild implentieren und Sourcecode funktioniert nicht (Logo soll halbtransparent sein)



  • Also ich schreib mal nen neuen thread(beim anderen blickt keiner mehr durch)

    Ich möchte ein Logo auf ein Bild implentieren und der Sichbarkeitsgrad,des Logos, soll Stufenlos zu regeln sein.

    Ich habe folgenden Source:

    Boolean TForm::WaterMark(int Percent, double SizePercent)
    { int X,Y;
      Boolean Ready=false;
      double Zoom;
      TRect R;
      Boolean OnlyBright=Percent<0;
      Graphics::TBitmap *Src=new Graphics::TBitmap();
      Src->PixelFormat=pf24bit;
      try
      {
        Src->LoadFromResourceName((int)HInstance,"LOGO");
        Src->PixelFormat=pf24bit;
        R=Rect(0,0,Src->Width,Src->Height);
        Zoom=min(((double)Pic->Bitmap->Width / Src->Width),((double)Pic->Bitmap->Height / Src->Height)) * SizePercent;
        if (Zoom>1)
        { Src->Width*=Zoom;
          Src->Height*=Zoom;
          Src->Canvas->CopyRect(Rect(0,0,Src->Width,Src->Height),Src->Canvas,R);
        }
    
        PRGBTriple DstLine, SrcLine;
        for (Y=0;Y<Src->Height;Y++)
        {
          if (((Y + (Pic->Bitmap->Height - Src->Height) / 2)>0) &&
              ((Y + (Pic->Bitmap->Height - Src->Height) / 2)<Pic->Bitmap->Height))
          {
            SrcLine=(PRGBTriple)Src->ScanLine[Y];
            DstLine=(PRGBTriple)Pic->Bitmap->ScanLine[Y + (Pic->Bitmap->Height - Src->Height) / 2];
            for (X=0;X<Src->Width;X++)
            {
              if (((X + (Pic->Bitmap->Width - Src->Width) / 2)>0) &&
                  ((X + (Pic->Bitmap->Width - Src->Width) / 2)<Pic->Bitmap->Width))
              {
                if ((SrcLine[X].rgbtRed + SrcLine[X].rgbtGreen + SrcLine[X].rgbtBlue)>0)
                {
                  if (Percent>=0)
                  {
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtRed=(SrcLine[X].rgbtRed * Percent) / 100 + (DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtRed * (100 - Percent)) / 100;
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtGreen=(SrcLine[X].rgbtGreen * Percent) / 100 + (DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtGreen * (100 - Percent)) / 100;
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtBlue=(SrcLine[X].rgbtBlue * Percent) / 100 + (DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtBlue * (100 - Percent)) / 100;
                  }
                  else
                  {
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtRed=(DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtRed * (100 + Percent)) / 100;
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtGreen=(DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtGreen * (100 + Percent)) / 100;
                    DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtBlue=(DstLine[X + (Pic->Bitmap->Width - Src->Width) / 2].rgbtBlue * (100 + Percent)) / 100;
                  }
                }
              }
            }
          }
        }
        Ready=true;
      }
      catch(...)
      {
      }
      delete Src;
      return Ready;
    }
    

    So ich bekomme immer die Fehlermeldung beim Linken, dass Bitmap kein member von TImage ist.
    [C++ Error] Trans.cpp(98): E2316 'Bitmap' is not a member of 'TImage'

    Und folgende meldung (wobei "min" in den ersten Zeilen des Source markiert wird):

    [C++ Error] Trans.cpp(98): E2268 Call to undefined function 'min'

    Ich weiß nicht was ich noch verändern muss damit mein Source klappt.
    Bis jetzt habe ich 2 TImages: Pic und Src(für das logo)

    Wäre erfreut über eure Hilfe
    mfg Maxmann



  • Maxmann schrieb:

    Also ich schreib mal nen neuen thread(beim anderen blickt keiner mehr durch)

    So ich bekomme immer die Fehlermeldung beim Linken, dass Bitmap kein member von TImage ist.
    [C++ Error] Trans.cpp(98): E2316 'Bitmap' is not a member of 'TImage'

    Image1->Picture->Bitmap

    Wo ist aber in Deinem Source ein Image?

    min - Problem:

    laut Hilfe #define min(a, b) (((a) < (b)) ? (a) : (b))



  • Ich dachte "Pic" wäre mein TImage. Ich habe auf jeden Fall ein TImage namens "Pic" erstellt.
    mfg maxmann



  • Maxmann schrieb:

    Ich dachte "Pic" wäre mein TImage. Ich habe auf jeden Fall ein TImage namens "Pic" erstellt.
    mfg maxmann

    Ich habe keine Ahnhung, was nun Dein Image ist. Für den Fall, dass es Pic heisst, musst Du eben Pic->Picture->Bitmap->... schreiben.

    Gruss



  • auschnitt au meinem source

    PRGBTriple DstLine, SrcLine;
        for (Y=0;Y<Src->Height;Y++)
        {
          if (((Y + (Pic->Bitmap->Height - Src->Height) / 2)>0) &&
              ((Y + (Pic->Bitmap->Height - Src->Height) / 2)<Pic->Bitmap->Height))
    

    ich benutze doch bereits pic in meinem source oder was willst du mir sagen?
    mfg maxmann



  • Rostfrei[] schrieb:

    Ich habe keine Ahnhung, was nun Dein Image ist. Für den Fall, dass es Pic heisst, musst Du eben Pic->**Picture->**Bitmap->... schreiben.

    ...



  • Wenn es nicht so traurig wäre......

    sorry, aber wie oft soll es nun noch hingeschrieben werden, bis du es liest??

    Zoom=min(((double)Pic->Bitmap->Width -> geht nicht, weil Pic ein TImage ist und das, wie der Compiler sagt keine Eigenschaft Bitmap hat.

    Zoom=min(((double)Pic->Picture->Bitmap->Width -> geht eher, weil Picture eine Eingeschaft von TImage ist und diese wiederum hat die Eigenschaft Bitmap



  • Und ihr musstet 30 Einträge schreiben um mir das klar zu machen? Sorry war bisl schwer von Verstand aber so is das bei mir net rübergekommen, vorallem weil ich dachte, dass der Source so in Ordnung is und ich nur noch was deklarieren muss danke demnoch an alle.
    mfg Maxmann



  • Und ihr musstet 30 Einträge schreiben um mir das klar zu machen? Sorry war bisl schwer von Verstand aber so is das bei mir net rübergekommen,

    Ja, mit dem lesen eines Textes ist da so manchmal ein Sache...



  • Maxmann schrieb:

    Und ihr musstet 30 Einträge schreiben um mir das klar zu machen?
    .
    .
    .
    vorallem weil ich dachte, dass der Source so in Ordnung is und ich nur noch was deklarieren muss danke demnoch an alle.
    mfg Maxmann

    Ja, wer lesen kann ist echt im Vorteil. 🙂 🙂 🙂

    Siehe meinen Beitrag mit dem Code:

    DerAltenburger schrieb:

    Pic ist das zu bearbeitende Zielbild in einem TPicture Member von Form

    Aber mach Dir nichts draus. Viele lesen nicht alles genau. Wichtig ist das Ergebnis
    MfG
    DerAltenburger



  • DerAltenburger schrieb:

    Aber mach Dir nichts draus. Viele lesen nicht alles genau. Wichtig ist das Ergebnis

    Also an dieser Stelle möchte ich Dir widersprechen. Die Lösung hat bereits 3 Mal im Klartext im ersten Thread zu diesem Thema gestanden. Und da er diesen Thread ebenfalls begonnen hat, hätte er schon etwas geanuer lesen müßen...

    Just my 2 cents...



  • Weiterhin sollte er als Autor eigentlich am besten wissen, ob er ein TImage oder TBitmap deklariert hat.



  • Er war ja nicht der Autor -> ihm wurde eine Routine gegeben, die mit Bitmap anstatt - wie benötigt - mit TImage arbeitet.

    Jedoch wurde der daraus entstandene Fehler ausführlich "besprochen"



  • Erstma danke ich euch, dann tut es mir leid , dass ich nicht direkt verstanden hab und könntet ihr/du mir noch sagen wie ich das Logo einbinde??
    Ich glaub ich muss eine .rc datei dafür schreiben oda? aber was schreibe ich nun rein??
    mfg Maxmann





  • Maxmann schrieb:

    Erstma danke ich euch, dann tut es mir leid , dass ich nicht direkt verstanden hab und könntet ihr/du mir noch sagen wie ich das Logo einbinde??
    Ich glaub ich muss eine .rc datei dafür schreiben oda? aber was schreibe ich nun rein??
    mfg Maxmann

    Oder Du machst in die Form ein unsichtbares TImage und fügst das Bild im Objektinspektor da ein.


Anmelden zum Antworten