[ 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 | 39
Bydlisko: Michalovce
NapísalOffline : 25.08.2011 22:44 | vykreslovanie grafu

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 | 2
NapísalOffline : 26.08.2011 10:46 | vykreslovanie grafu

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 | 0
NapísalOffline : 26.08.2011 13:08 | vykreslovanie grafu

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 | 39
Bydlisko: Michalovce
Napísal autor témyOffline : 26.08.2011 16:29 | vykreslovanie grafu

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 | 0
NapísalOffline : 26.08.2011 17:22 | vykreslovanie grafu

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 | 2
NapísalOffline : 26.08.2011 19:54 | vykreslovanie grafu

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 | 58
Bydlisko: Myjava
NapísalOffline : 27.08.2011 11:54 | vykreslovanie grafu

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
 [ Príspevkov: 7 ] 


vykreslovanie grafu



Podobné témy

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

[Delphi] vykreslovanie drahy

v Delphi, Visual Basic

9

892

16.02.2011 19:34

vama

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

Pomale vykreslovanie Photoshop

v Grafické programy

4

594

12.11.2009 12:29

El_locco

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

nahodne vykreslovanie - pascal

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

16

1711

03.06.2007 22:38

juho

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

gts250 1gb vykreslovanie

v nVidia grafické karty

4

397

01.01.2011 9:47

marko13

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

QtCreator - vykreslovanie pixelov

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

9

624

27.02.2011 23:40

Fico

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

Vykreslovanie do Canvas

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

4

325

13.04.2013 12:14

XOLOO

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

SVG vykreslovanie v cecku

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

12

801

19.06.2011 17:52

ice-g

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

C - vykreslovanie sikmych ciar

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

8

669

29.05.2010 13:48

stopa27

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

Delphi - Dynamické vykreslovanie (runtime) komponentov

v Delphi, Visual Basic

3

589

15.10.2010 10:05

coldak

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

Ati Radeon HD4870 - zle vykreslovanie

v ATI/AMD grafické karty

1

674

09.10.2011 9:56

mirom

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

Aku grafu???

v Grafické karty

12

795

26.10.2008 9:21

Palinhoo

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

Postupny update grafu......

v PHP, ASP

8

791

05.05.2010 22:25

neo6891

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

Vytvorenie vlastneho grafu

v Delphi, Visual Basic

1

608

07.02.2014 15:21

apacu

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

tvorba suradnicoveho grafu

v Ostatné programy

6

656

03.08.2008 13:12

buffalobill

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

chladic na grafu

v ATI/AMD grafické karty

4

823

27.10.2006 21:17

zmija31

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

ziskanie dat z grafu

v Grafické programy

1

290

24.10.2013 14:30

shiro



© 2005 - 2025 PCforum, edited by JanoF