Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.05.09
Prihlásený: 16.01.18
Príspevky: 95
Témy: 39
Bydlisko: Michalovce
Príspevok NapísalOffline : 25.08.2011 22:44

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).


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 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).


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.05.09
Prihlásený: 16.01.18
Príspevky: 95
Témy: 39
Bydlisko: Michalovce
Príspevok Napísal autor témyOffline : 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.


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 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ú).


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2
Príspevok NapísalOffline : 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.


Offline

Užívateľ
Užívateľ
vykreslovanie grafu

Registrovaný: 20.11.09
Prihlásený: 02.11.14
Príspevky: 241
Témy: 58
Bydlisko: Myjava
Príspevok NapísalOffline : 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
Odpovedať na tému [ Príspevkov: 7 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. nahodne vykreslovanie - pascal

v Assembler, C, C++, Pascal, Java

16

1659

03.06.2007 22:38

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. gts250 1gb vykreslovanie

v nVidia grafické karty

4

355

01.01.2011 9:47

marko13 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. QtCreator - vykreslovanie pixelov

v Assembler, C, C++, Pascal, Java

9

580

27.02.2011 23:40

Fico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vykreslovanie do Canvas

v Assembler, C, C++, Pascal, Java

4

287

13.04.2013 12:14

XOLOO Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [Delphi] vykreslovanie drahy

v Delphi, Visual Basic

9

858

16.02.2011 19:34

vama Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Pomale vykreslovanie Photoshop

v Grafické programy

4

548

12.11.2009 12:29

El_locco Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. SVG vykreslovanie v cecku

v Assembler, C, C++, Pascal, Java

12

763

19.06.2011 17:52

ice-g Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - vykreslovanie sikmych ciar

v Assembler, C, C++, Pascal, Java

8

634

29.05.2010 13:48

stopa27 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Ati Radeon HD4870 - zle vykreslovanie

v ATI/AMD grafické karty

1

629

09.10.2011 9:56

mirom Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Delphi - Dynamické vykreslovanie (runtime) komponentov

v Delphi, Visual Basic

3

545

15.10.2010 10:05

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Aku grafu???

v Grafické karty

12

734

26.10.2008 9:21

Palinhoo Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. tvorba suradnicoveho grafu

v Ostatné programy

6

618

03.08.2008 13:12

buffalobill Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. chladic na grafu

v ATI/AMD grafické karty

4

782

27.10.2006 21:17

zmija31 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Postupny update grafu......

v PHP, ASP

8

700

05.05.2010 22:25

neo6891 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vytvorenie vlastneho grafu

v Delphi, Visual Basic

1

547

07.02.2014 15:21

apacu Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Nedoplnit nic do grafu

v Delphi, Visual Basic

0

418

29.03.2010 22:53

Siriuse Zobrazenie posledných príspevkov


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

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra