Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi probleme mit farbveränderung in einem bitmap!!!! (https://www.delphipraxis.net/37486-probleme-mit-farbveraenderung-einem-bitmap.html)

heiopei 6. Jan 2005 13:54


probleme mit farbveränderung in einem bitmap!!!!
 
mittach,
ich möchte eine prozedur schreiben, die als input zwei word-werte(länder-id) überwiesen bekommt (und ob der farbwert zurrückgesetzt werden soll). ich möchte diese prozedur dazu verwenden, dass der benutzer in meinem programm auf eine karte klickt und somit das angeklickte land (jedes land hat seine eigene farbe) farblich hervorhebt. (zurückgesetzt werden muss, wenn bereits ein land markiert ist)

also ich hab mir jetzt folgendenden code zusammengebastelt und festgestellt, dass da irgendwo n hund drin ist:

Delphi-Quellcode:
procedure Tfrmmain.sign_land(landold, landnew: Word; setback: Boolean);
var
  x, y: Word;
  row: PRGBQuad;
begin
  if setback = true then
  begin
    for y := 0 to imgmap.Picture.Bitmap.Height - 1 do
    begin
      row := imgmap.Picture.Bitmap.ScanLine[y];
      for x := 0 to imgmap.Picture.Bitmap.Width - 1 do
      begin
        if (row.rgbBlue = 0) and (row.rgbGreen = 0) and (row.rgbRed = 255) then
        begin
          row^.rgbBlue := colors[landold - 1].rgbBlue;
          row^.rgbGreen := colors[landold - 1].rgbGreen;
          row^.rgbRed := colors[landold - 1].rgbRed;
        end;
        inc(row);
      end;
    end;
  end;
  for y := 0 to imgmap.Picture.Bitmap.Height - 1 do
  begin
    row := imgmap.Picture.Bitmap.ScanLine[y];
    for x := 0 to imgmap.Picture.Bitmap.Width - 1 do
    begin
      if (row.rgbBlue = colors[landnew - 1].rgbBlue) and
          (row.rgbGreen = colors[landnew - 1].rgbGreen) and
          (row.rgbRed = colors[landnew - 1].rgbRed) then
      begin
        row.rgbBlue := 255;
        row.rgbGreen := 0;
        row.rgbRed := 0;
      end;
      inc(row);
    end;
  end;
end;
kann mir da jemand helfen?!? - ich vermute dass da n gravierender pointerfehler drin is

ps: die karte schaut danach bunt gestreift aus :-(

heiopei 7. Jan 2005 13:05

Re: probleme mit farbveränderung in einem bitmap!!!!
 
an guadn tach,
hat immer noch keiner ne idee?!?

oder wüsste jemand wie ich das anders lösen könnte?

ps: momentan ist colors als TRGBQUAD-array definiert

tschüss,
heiopei

Muetze1 7. Jan 2005 13:38

Re: probleme mit farbveränderung in einem bitmap!!!!
 
Moin!

Ist dein Bitmap auch 100%ig 32 Bit ? Also PixelFormat = pf32bit ?

MfG
Muetze1

heiopei 8. Jan 2005 12:01

Re: probleme mit farbveränderung in einem bitmap!!!!
 
hallo,
gut das du das fragst,
aber ich erstens meine ich das es eins ist und zweitens macht das was aus?
aber ich werd das jetzt mal schnellstens überprüfen und dann noch mal posten!!!

tschüss,heiopei

Muetze1 8. Jan 2005 16:48

Re: probleme mit farbveränderung in einem bitmap!!!!
 
Moin!

Zitat:

Zitat von heiopei
hallo,
gut das du das fragst,
aber ich erstens meine ich das es eins ist und zweitens macht das was aus?
aber ich werd das jetzt mal schnellstens überprüfen und dann noch mal posten!!!

tschüss,heiopei

Klar macht das was aus! Wenn du direkt dir die Pixeldaten holst mit ScanLine, dann liegen die in einem Format vor, der abhängig ist vom PixelFormat - und nur bei pf32Bit liegen die Pixel als Aneinanderreihung von TRGBQuad Strukturen vor.

MfG
Muetze1


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz