[delphi] jak ustawic obramowanie dla image

0

hi all, mam na formie image i teraz chcialbym kilkajac na niego (onclick) zeby wokol niego pojwila sie zalozmy czerwona ramka grubosci zalozmy pol centymetra....

nie moge nigdzie znaleŹĆ sensownej odpowiedzi , podrawiam i licze na pomoc :D [browar]

0

Połóż sobie na formie TShape, poustawiaj go jak tam chcesz (żeby m.in. był) przeźroczysty i steruj właściwością Visible w tym zdarzeniu. Inna opcja to OnPaint formatki (lub komponentu na którym umieszczony jest image) - w OnClick ustaw jakąś flage (~fMalowac) a w OnPaint, If fMalowac then malujeszcz kwadrat wokół image'a.

A może są jeszcze inne prostsze opcje ...

0

BitmapBrush i poligony i da się jakoś rysować ramkę ze wzorkiem =)

0

tak, wiem ze mozna to zrobic operujac innymi komponentami pomocniczymi ale chodzi mi chyba bardziej o RYSOWANIE tylko ze nie mam o tym pojecia moze ktos zarzuci przykladem ?? a ha i jak sie narysuje dobrze byloby tez gdyby ta ramka byla usuwalna ,tzn jak sie namaluje zeby mozna bylo usunac te ramke odmalowac :)
pozdrawiam

0

no autre dales linka gdzie jakies tam rysowanie wystepuje (rysowanie okregów na bitmapie) ale nijak to mi nie pomaga w rozwiazaniu problemu ....
CHODZI O OBRAMOWANIE IMAGE

0

masz gotowca hehe

procedure TForm1.Image1Click(Sender: TObject);
begin
image1.Canvas.Pen.Color:=clred;  //kolor pisaka czerwony
image1.Canvas.Pen.Width:=10;     // grubość pisaka 10
image1.Canvas.Rectangle(1,1,image1.Width,image1.Height); // rysuje kwadrat o współrzędnych 1,1 i width height
end;
0
ctreative napisał(a)

no autre dales linka gdzie jakies tam rysowanie wystepuje (rysowanie okregów na bitmapie) ale nijak to mi nie pomaga w rozwiazaniu problemu ....
CHODZI O OBRAMOWANIE IMAGE

Miło, że wpadłeś na to, że trzeba narysować prostokąt... I PROPONUJĘ NIE KRZYCZEĆ tylko myśleć.

0

no podany wyzej kod rysuje ramke ale obrazek znika a w jego miejsce pojaiwa sie biale pole - ktos wie oco chodzi ??

Dodam tylko juz nie krzycząc ze z programowaniem nie wiaze przyszlosci i nie chce sie tego uczyc po prostu musze narysowac ta ramke cholerną wiec pytam o rade was- PROGRAMISTOW, pozdrawiam

0

załaduj po zwolnieniu przycisku metoda OnMouseUp ponownie obrazek

0

jak zalduje ponownie to ramka znika ....

0

to nie rozumiem o co ci Chodzi, czy chcesz by znikła ramka czy nie? jeżeli ma ona zmieniać kolor to powtórz dla zdarzenia OnMouseUp to samo co w onMouseDown tylko użyj innego koloru

0

chodzi o to ze kod do rysowania ramki nie dziala jak tzreba bo ramka sie rysuje ale obrazek znika , powstaje figura z czerwonymi bokami ale pusta - biala w srodku

0

bo musisz ustawić Canvas.Brush.Style := bsClear i wtedy środek nie bedzie ruszony

0

i o to chodzilo , [browar] dla tych co pomogli [browar] :

image1.Canvas.Brush.Style := bsClear ;
image1.Canvas.Pen.Color:=clred;  //kolor pisaka czerwony
image1.Canvas.Pen.Width:=10;     // grubość pisaka 10
image1.Canvas.Rectangle(1,1,image1.Width,image1.Height); // rysuje kwadrat o współrzędnych 1,1 i
0

powracam z nowym malym problemem a mianowicie ramka dziala tylko jak zaladujemy do image plik bmp - na jpg juz nie dziala :
kombinowalem takei cos ale nie chce dzialac - eh ale jestem newbie :) ktos pomoze ?

   b1:=TBitmap.Create;
    JPG:=TJpegImage.Create;  //tworze jpg
   //   JPG.Assign(Form1.Image1.picture);
  //      b1.Assign(JPG);
          b1.Assign(Form1.Image1.picture);
      image1.Assign(b1);
      image1.Canvas.Rectangle(1,1,image1.Width,image7.Height);
 { image1.Canvas.Brush.Style := bsClear ;
  image1.Canvas.Pen.Color:=clred;  //kolor pisaka czerwony
  image1.Canvas.Pen.Width:=10;     // grubość pisaka 10
  image1.Canvas.Rectangle(1,1,image1.Width,image1.Height);
  // rysuje kwadrat o współrzędnych 1,1 i  }

        b1.Free;
        JPG.Free;
0

może pokombinuj z Image1.Picture.Width, Image1.Picture.Height

0

ok jacobie :) rozgryzlem to :) ostatnie pytanei z tej serii...
jak klikam na image to mi sie rysuje ramka , jak zrobic zeby jak powtórnie klikne na image zeby ta ramka znikala ja bym to widzial tak :

if canvas jest porysowany = true then image1.picture.loadfromfile(obrazek) else
rysuj ramke

tylko nie wiem jak to poprawnie zapisac aha i 2 rzecz to taka czy warunek image1.picture.loadfromfile(obrazek) jest koneiczny nie mozna jakos tego image odswiezyc zeby uzyskac czysty nieporysowany obrazek czy tzreba koneicznie go jeszcze raz ladowac z dysku ??

0

możesz wpakować do zmiennej i na niej operować co nie ?

var
  Form1: TForm1;
  bmp:tbitmap;

procedure
begin
bmp:=tbitmap.Create;
bmp.LoadFromFile('C:\i.bmp');
image1.Picture.Assign(bmp);
end;

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