Wywolanie procedury w tmainmenu i zoom

0

Witam.
Mam problem, mianowicie jak wywolac procedure z TMainMenu?
np

procedure Contrast(var Bitmap:TBitmap; Amount: Integer);
//tu jest reszta tej procedury (wzieta z gotowcow)
procedure TForm1.Kontrast1Click(Sender: TObject);
begin
//CO TU WPISAC? Chce zeby ta procedura zadzialala na obrazek wczytany do TImage
end;

Druga sprawa (mniej wazna) jest zoom.
Napisalem program ktory wczytuje obraz do TImage, znalazlem mase komend jak powiekszyc ten obrazek, ale zamiast obrazka powieksza mi tylko TImage.. Ma ktos na to jakis pomysl?

0

To chyba bardziej do działu newbie?
Używać gotowców i nie wiedzieć jak ich używać :).
Procedurę wywołujesz tak:

Contrast(Image1.Picture.Bitmap,1);// Nie wiem co to jest te "amount" dałem domyślnie 1 ;)

0

[DCC Error] Unit1.pas(85): E2197 Constant object cannot be passed as var parameter

taki error przy uruchomieniu jest, kursor zatrzymuje sie po bitmap :/

0

O jejku jejeczku że aż tak zabiadole nad brakiem samodzielności pytającego. Takie podstawy.
Przecież komunikat wszystko "mówi". Nie mozna przekazać wartości stałej jako wymaganej w
parametrze zmiennej. Wystarczyło wcisnąć F1 i zobaczyć objaśnienia w Helpie. Ale z tego, co
widzę procedura Contrast nie potrzebuje niczego poza Bitmapą która i tak będzie pod zmienną
oraz liczby typu integer. Masz poniżej gotowca. Dla załadowanego jpega działa. Dla przykladowej
z katalogu Images jakiejś bitmapy statku 256 kolorwej nie za bardzo zadziałał i tylko ją "popsuł".

//...
function IntToByte(i:Integer):Byte;
begin
  if i > 255 then
    Result := 255
  else if i < 0 then
    Result := 0
  else
    Result := i;
end;

procedure Contrast(var Bitmap:TBitmap; Amount: Integer);
var
ByteWsk:^Byte;
H,V:  Integer;
begin
  for V:=0 to Bitmap.Height-1 do
  begin
    ByteWsk:=Bitmap.ScanLine[V];
    for H:=0 to Bitmap.Width*3 -1  do
    begin
      if ByteWsk^>127 then
      ByteWsk^:=IntToByte(ByteWsk^+(Abs(127-ByteWsk^)*Amount)div 255)
      else ByteWsk^:=IntToByte(ByteWsk^-(Abs(127-ByteWsk^)*Amount)div 255);
      Inc(ByteWsk);
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Bmp : TBitmap;
begin
  Bmp := TBitmap.Create;
  Bmp.Assign(Image1.Picture.Graphic);
  Contrast(Bmp, 58);
  Image1.Picture.Bitmap.Assign(Bmp);
  Bmp.Free;
end;
0

jestem poczatkujacym w delphii, a programowanie nie jest moja dobra strona..

dziala, dzieki :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1