Delphi programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


Tomi_78
(tag)

Bizony jó érzés, és még jobb végre elkészülni a programmal. Ez egy kis képszerkesztő, amivel egyszerre nagy mennyiségű képet lehet átméretezni és átnevezni. Talán másoknak is jól jöhet, ezért beillesztem ide a letöltési címét: [link]
És még egyszer, ezer köszönet a segítségért, Vz12! Bár a programfejlesztéssel ezzel nem állok le, sőt, vannak egyéb játékok és felhasználói programok még, amik megvalósításra várnak, ezért nem kizárt, hogy jövök még ide. :K


Tomi_78
(tag)

Sziasztok!
Valaki tud nekem segíteni abban a problémámban, hogy hogyan lehet átdefiniálni a programban a gombokat? Tehát most pl. a nyíl gombokkal irányítok, de szeretném, ha a felhasználó ezeket kedve szerint állíthatná be.
Hogy lehet a lenyomott gomb kódját eltárolni és felhasználni? Milyen adattípus kell hozzá?
Most VK_LEFT, VK_RIGHT, VK_UP és VK_DOWN van használatban.


vz12
(tag)

Hááát, szerintem a help-ben benne kellene lennie a kódoknak, vagy a Google is segít, pl. a "Delphi key codes" keresése után, rengeteg találat van.
Ha a numerikus kódokat saját szemeddel akarod látni, akkor pl. az OnKeyDown bemenő paramétereit írasd ki, ezeket el is tudod tárolni, mondjuk egy INI fájlban, majd később ezeket vissza is tudod olvasni, szövegből numerikus típussá alakítva vizsgálni is tudod. A régebbi Delphi-kben ez WORD típus, az újakban nem tudom. Kis/nagybetűkre figyelj.

[ Szerkesztve ]


Tomi_78
(tag)

Köszi, akkor megnézem azt a keresési feltételt és próbálkozom az OnKeyDown paramétereinek kiíratásával.


Tomi_78
(tag)

Sziasztok!
Készülő programomban van egy ScrollBox, azon pedig egy TImage kép (terepVaszon néven). Erre a TImage-re szeretnék még rajzolni rácsvonalakat, de úgy, hogy ne legyenek a TImage részei, mert később a rácsvonalak nélkül szeretném elmenteni és a rácsvonalak mutatása ki/bekapcsolható legyen.
Mindennek megvalósítására létrehozok még egy TImage-et (tvracskep néven), amelynek a ScrollBox a szülője, hogy azon helyezkedjen el, és a TImage vásznához hozzárendelek egy BitMap képet, amelyen a rácsok rajzolása megtörtént.
Ki is rajzolódik a rács, de mindig egy fekete háttéren, amit sehogy nem bírok eltüntetni, és így nem látszik az alatta levő kép.
Lehetséges egyáltalán egy képen rajzolni valamit úgy, hogy a rajzkép áttetsző legyen a nem használt részein? Ha igen, hogyan?
Itt a teljes kód, amit írtam:
procedure TForm1.racsmutatoGombMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var bm: TBitmap;
  vszvonalhely,fugvonalhely: word;
begin
  if tvracsmutat=true then
  begin
     tvracsmutat:=false;
     if vantvracs=true then
     begin
       FreeAndNil(tvracskep);
       vantvracs:=false;
     end;
  end
  else
  begin
    tvracsmutat:=true;
    if vantvracs=false then
    begin
      tvracskep:=TImage.Create(tvScrBox);
      tvracskep.Parent:=tvScrBox;
      tvracskep.Left:=0;
      tvracskep.Top:=0;
      tvracskep.width:=terepVaszon.width;
      tvracskep.height:=terepVaszon.Height;
      tvracskep.Transparent:=true;
      bm:=TBitmap.Create;
      bm.width:=terepVaszon.width;
      bm.height:=terepVaszon.Height;
      bm.PixelFormat:=pf32Bit;
      bm.Transparent:=true;
      bm.Mask(clBlack);
      fugvonalhely:=csempeszel;
      vszvonalhely:=csempemag;
      bm.canvas.pen.color:=clBlue;
      while fugvonalhely<terepVaszon.width do
      begin
          bm.canvas.line(fugvonalhely,0,fugvonalhely,terepVaszon.height);
          inc(fugvonalhely,csempeszel);
      end;
      while vszvonalhely<terepVaszon.height do
      begin
          bm.canvas.line(0,vszvonalhely,terepVaszon.width,vszvonalhely);
          inc(vszvonalhely,csempemag);
      end;
      tvracskep.picture.graphic:=bm;
      tvracskep.picture.graphic.transparent:=true;
      FreeAndNil(bm);
    end;
    vantvracs:=true;
  end;
end;


Tomi_78
(tag)

Annyiban előrébbjutottam, hogy a Form1-re már ki tudom rajzolni háttér nélkül a rácsot, de az eredeti helyére, ahová kellene, oda még nem. Ott mindig mutatja a vászna fekete háttérszínét, vagy ha megjegyzéssé teszek bizonyos sorokat, akkor semmit sem látni:
procedure TForm1.racsmutatoGombMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if tvracsmutat=true then begin tvracsmutat:=false; if vantvracs=true then begin FreeAndNil(tvracskep); vantvracs:=false; end; end else begin tvracsmutat:=true; if vantvracs=false then begin tvracskep:=TImage.Create(tvScrBox); tvracskep.Parent:=tvScrBox; tvracskep.Left:=0; tvracskep.Top:=0; tvracskep.width:=terepVaszon.width; tvracskep.height:=terepVaszon.Height; tvracsrajzolas(tvracskep); end; vantvracs:=true; end; end; procedure TForm1.tvracsrajzolas(Sender: TObject); var vszvonalhely,fugvonalhely: word; begin if tvracsmutat=true then begin fugvonalhely:=csempeszel; vszvonalhely:=csempemag; //with tvracskep do // Ha ezek ki vannak kommentelve, a rács látszódik, //begin // de nem a tvracskep koordinátáiban és nem is tudom eltüntetni. canvas.pen.color:=clBlue; while fugvonalhely<terepVaszon.width do begin canvas.line(fugvonalhely,0,fugvonalhely,terepVaszon.height); inc(fugvonalhely,csempeszel); end; while vszvonalhely<terepVaszon.height do begin canvas.line(0,vszvonalhely,terepVaszon.width,vszvonalhely); inc(vszvonalhely,csempemag); end; //end; end; end;

[ Szerkesztve ]


Tomi_78
(tag)

Mi a franc van ezzel a rohadt programkód formázással??? :F


Tomi_78
(tag)

Időközben megoldottam! :DD Néhány hét intenzív kísérletezgetés után végre csak a rácsvonalak látszódnak a kép fölött, bármiféle zavaró-kitakaró fekete vagy egyéb színű vásznak nélkül.
Mit mondjak, nem volt könnyű eljutnom a megoldásig és párszor majdnem feladtam, de végül csak sikerült. :K

üzenetek