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]
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]
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 ...
BitmapBrush i poligony i da się jakoś rysować ramkę ze wzorkiem =)
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
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
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;
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ć.
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
załaduj po zwolnieniu przycisku metoda OnMouseUp ponownie obrazek
jak zalduje ponownie to ramka znika ....
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
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
bo musisz ustawić Canvas.Brush.Style := bsClear i wtedy środek nie bedzie ruszony
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
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;
może pokombinuj z Image1.Picture.Width, Image1.Picture.Height
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 ??
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;