| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 23.05.09 Prihlásený: 16.01.18 Príspevky: 95 Témy: 39 Bydlisko: Michalovce |
Zdravim, potreboval by som poradit. Mam canvas na ktory zlozitym vypoctom vykreslujem krivky grafu. Ked na graf vykreslim dve krivky tak mi prebehne funkcia vykreslujuca krivku dvakrat. Ked chcem vykreslit este jednu krivku tak musim resetnut cely canvas a vykreslit zasa vsetky tri krivky. Ked ich tam mam dajme tomu 20 uz fakt dlho trva. Resetujem graf zakazdym pretoze ked nahodou zobrazovanie jednej krivky vypnem neviem ju zmazat. Ako na to?
priklad pre lepsie pochopenie
mam canvas na ktory vykreslim graf funkcie x^2. Potom na neho vykreslim aj dajme tomu e^x. Potom log(x). Potom e^x chcem dat prec z canvasu bez toho aby som cely graf zmazal a znovu vykreslil tie dva. (pretoze to v mojom grafe je velmi zlozite).
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 26.08.2011 10:46 | |
|
no mozes prekreslit krivku ktoru chces vymazat tak ze ju zinvertujes, alebo si sprav viacvrstvovy system, kazda krivka bude na inej vrstve a pri zobrazovani sa budu vrstvy na seba ukladat alebo odtial odoberat tak ako to robia editory obrazkov.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 26.08.2011 13:08 | |
|
Celkom by ma zaujímalo, ako veľký graf vykresluješ, keď to trvá tak dlho. Predpokladám ale, že tým vykresľovaním v skutočnosti myslíš výpočet a následné vykreslenie (a ak áno, tak ti nič nebráni si ten výpočet uložiť do poľa, aby si to potom nemusel počítať znovu).
|
|
Registrovaný: 23.05.09 Prihlásený: 16.01.18 Príspevky: 95 Témy: 39 Bydlisko: Michalovce | Napísal autor témy Siriuse: 26.08.2011 16:29 | |
|
Hej... nie vykreslovanie ale vypocet presne som myslel, a ako by som spravil ten viacvrstvovy system? Grafy maju roznu farbu aby sa v nich dalo vyznat, preto to nepomoze invertovat. A ukladat kazdy graf do poli sa mi nepaci.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 26.08.2011 17:22 | |
|
Viacvrstvový systém neurobíš nijako (pretože tie grafy sa budú prekrývať a to, čo je prekryté už nijako nezískaš).
Ak teda nechceš nič nikam ukladať, musíš sa zmieriť s tým, že to bude pomalé (ukladať môžeš napr. predrendrovaný obrázok či niečo podobné, ale pole s údajmi je výhodnejšie, pretože napr. ak ten graf zväčšíš dvojnásobne, tak už v tom poli polovicu bodov budeš mať vypočítanú).
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 26.08.2011 19:54 | |
|
Siriuse, vcom je problem ? kreslis predsa na canvas . tak zacni kreslit kazdy graf na samostatny canvas a podla potreby si kopiruj obsah jedneho az n canvasov do toho ktory je na zobrazovanie.
Kód: img1.Canvas.CopyMode := cmSrcAnd ; //nastavis sposob kopirovania na taky aby sa obrazky zmiesali img1.Canvas.CopyRect(rect(20,20,250,250),img2.canvas,rect(20,20,250,250)); // a tu vykonas skopirovanie
ked budes chciet niektoru z kriviek odobrat z grafu tak iba graf znovuvyskladas z canvasov ale bez canvasu na ktorom je krivka ktoru v grafe nechces. to je aj podla mna dostatocne rychle. edit: narychlo zbuchana ukazka Kód: unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
type TForm1 = class(TForm) img1: TImage; img2: TImage; img3: TImage; chk1: TCheckBox; chk2: TCheckBox; img4: TImage; chk3: TCheckBox;
procedure chk1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.chk1Click(Sender: TObject); begin img1.Canvas.FillRect(img1.ClientRect); img1.Canvas.CopyMode := cmSrcAnd ; if chk1.Checked then img1.Canvas.CopyRect(img1.Canvas.ClipRect,img2.canvas,img1.Canvas.ClipRect); if chk2.Checked then img1.Canvas.CopyRect(img1.Canvas.ClipRect,img3.canvas,img1.Canvas.ClipRect); if chk3.Checked then img1.Canvas.CopyRect(img1.Canvas.ClipRect,img4.canvas,img1.Canvas.ClipRect);
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : Integer; begin img1.Canvas.FillRect(img1.ClientRect); img3.Canvas.Pen.Color := clGreen; img4.Canvas.Pen.Color := clBlue;
img2.Canvas.MoveTo(1,20); img3.Canvas.MoveTo(1,20); img4.Canvas.MoveTo(1,20);
for i :=0 to 360 do begin img2.Canvas.LineTo(i*16,20-trunc(sin(i)*16)); end; for i :=0 to 360 do begin img3.Canvas.LineTo(i*16,20-trunc(sin(i+5)*16)); end;
for i :=0 to 360 do begin img4.Canvas.LineTo(i*16,20-trunc(sin(i+10)*16)); end;
end;
end.
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 27.08.2011 11:54 | |
|
A co tak pouzit komponent urceny na vykreslovanie grafov - Chart?
Jednoducho sa snim pracuje, a mozes si snim invidualne vykreslovat, zmazavat krivky.
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| nahodne vykreslovanie - pascal v Assembler, C, C++, Pascal, Java | 16 | 1659 | 03.06.2007 22:38 juho | | gts250 1gb vykreslovanie v nVidia grafické karty | 4 | 355 | 01.01.2011 9:47 marko13 | | QtCreator - vykreslovanie pixelov v Assembler, C, C++, Pascal, Java | 9 | 580 | 27.02.2011 23:40 Fico | | Vykreslovanie do Canvas v Assembler, C, C++, Pascal, Java | 4 | 287 | 13.04.2013 12:14 XOLOO | | [Delphi] vykreslovanie drahy v Delphi, Visual Basic | 9 | 858 | 16.02.2011 19:34 vama | | Pomale vykreslovanie Photoshop v Grafické programy | 4 | 548 | 12.11.2009 12:29 El_locco | | SVG vykreslovanie v cecku v Assembler, C, C++, Pascal, Java | 12 | 763 | 19.06.2011 17:52 ice-g | | C - vykreslovanie sikmych ciar v Assembler, C, C++, Pascal, Java | 8 | 634 | 29.05.2010 13:48 stopa27 | | Ati Radeon HD4870 - zle vykreslovanie v ATI/AMD grafické karty | 1 | 629 | 09.10.2011 9:56 mirom | | Delphi - Dynamické vykreslovanie (runtime) komponentov v Delphi, Visual Basic | 3 | 545 | 15.10.2010 10:05 coldak | | Aku grafu??? v Grafické karty | 12 | 734 | 26.10.2008 9:21 Palinhoo | | tvorba suradnicoveho grafu v Ostatné programy | 6 | 618 | 03.08.2008 13:12 buffalobill | | chladic na grafu v ATI/AMD grafické karty | 4 | 782 | 27.10.2006 21:17 zmija31 | | Postupny update grafu...... v PHP, ASP | 8 | 700 | 05.05.2010 22:25 neo6891 | | Vytvorenie vlastneho grafu v Delphi, Visual Basic | 1 | 547 | 07.02.2014 15:21 apacu | | Nedoplnit nic do grafu v Delphi, Visual Basic | 0 | 418 | 29.03.2010 22:53 Siriuse |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|