Hirdetés

Új hozzászólás Aktív témák

  • 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;

Új hozzászólás Aktív témák