Obsah fóra
PravidláRegistrovaťPrihlásenie




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

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

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok NapísalOffline : 06.07.2011 17:58

Potreboval by som mensiu radu co by ma usmernila. Potreboval by som spravit mensi program a kedze nie som ziaden programator, viem vacsinou iba zaklady, tak neviem presne ako by som s tym programom zacal. Neviem co je na to najviac vhodne.
popis programu:
Mam pole napr. 1000x1000 v ktorom su napr. iba dve hodnoty. Ja potrebujem toto pole graficky zobrazit ako stvorceky roznych farieb [napr. 0--> modra 1-->cerverna], potom ako na dany stvorcek kliknem tak my mal zmenit farbu napr. z modrej na cervenu.
Znie to ako prkotina ale ked sa clovek nevyzna tak aj take nieco vie byt tazke :). Skusal som to v GTK+ pomocou elementu gtk_event_box, aj to fungovalo, lenze ak pouzijem pole velke napr. 1000x1000 tak sa okno programu neotvori ani po 10min. Cize tymto sposob to asi nedocielim. Co teda pouzit ?

Vopred dakujem za akukolvek radu,

// pridané po 1 minúte od posledného príspevku

Zabudol som dodat, vsetko robim v Linuxe a c++.


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 17.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 06.07.2011 22:43

Napis sem kod, ktory si skusal, lebo neviem si presne predstavit, co konkretne a ako to robis. Potom ti viac dokazeme pomoct.


Offline

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

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 07.07.2011 0:11

Zacal som to robit, ale ked som zistil, ze ak zadam pole 1000x1000 tak mi to uz nezobrazi okno, tak som s tym prestal, takze v kode je len cast kde chcem zobrazit okno s tymi elementami. Cize tento kod je len test ci by to slo, no a neide to. Je to asi prilis vela elementov. Preto hladam neaky iny sposob, ako zobrazit take mnozstvo dat a potom ich aj moct upravit a ulozit. mozno nieco ako graficky editor ale len s dvoma farbami :), napr. kazdy pixel by predstavoval jeden bod v mojej matici.

Kód:
#include <stdlib.h>
#include <iostream>
#include <stdio.h>
#include <string.h>

#include <gtk/gtk.h>

using namespace std;



struct block {

    GtkWidget * block;
    gint value;
};
struct block *map;

gint width;
gint height;

gint block_size;

GtkWidget *window;
GtkWidget *vbox;





 

void button_press_callback (GtkWidget *widget, gpointer *index){

}

void button_release_callback (GtkWidget *widget, gpointer *index){

}

void test(){
   gint i, a, b, sirka, vyska;
   GtkWidget  *hbox;

   sirka=1000;
   vyska=1000;
   vbox=gtk_vbox_new(0,0);
   g_free (map);
       map = (struct block *)g_malloc0(sizeof(struct block) * sirka * vyska);

       i=0;
       for(a=0;a<sirka; a++){
          hbox = gtk_hbox_new (0, 0);
          for(b=0;b<vyska;b++){
             GtkWidget *image;
             map[i].block = gtk_event_box_new ();
             image=gtk_image_new_from_file("./Resources/red.png");

 
                  gtk_widget_set_usize (map[i].block, block_size, block_size);
                  if((a%2)==0 && (b%2)==0)
                  gtk_container_add (GTK_CONTAINER (map[i].block), image);

                  g_signal_connect (G_OBJECT (map[i].block), "button_press_event",   G_CALLBACK (button_press_callback),   (gpointer)i);
                  g_signal_connect (G_OBJECT (map[i].block), "button_release_event", G_CALLBACK (button_release_callback), (gpointer)i);

                  gtk_box_pack_start (GTK_BOX (hbox), map[i].block, FALSE, FALSE, 0);

 
          
          
             i++;
          }
      gtk_box_pack_start(GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
       }
       
       gtk_container_add(GTK_CONTAINER(window),vbox);
       
       gtk_widget_show_all (vbox);
   
   


}








int main(int argc, char* argv[]){

   gtk_init(&argc, &argv);
   


   
   window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
   
   g_signal_connect(window, "delete_event", G_CALLBACK(gtk_main_quit), NULL);
   
   block_size=1;

   test();

   gtk_widget_show(window);

   gtk_main();
   g_free (map);
   return 0;
}


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 17.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 07.07.2011 19:43

Pri takom velkom pocte grafickych prvkov necakaj zazraky, aj ked nemas najslabsi PC. GTK neovladam, ale ja by som to riesil skor nejakym platnom, image-om. Vykreslis si obycajny image o velkosti 1000x1000 pixelov a osetris udalost kliknutia na tento image. Potom pixel, na ktorej pozicii bol kurzor prekreslis na inu farbu.
Toto riesenie ti nezoberie takmer ziaden procesorovy cas a aplikacia ti nezatuhne. Jedine, co by ti snad mohlo prekazat je, ze ak potrebujes nejake medzery medzi stvorcekmi, potom by to nebolo vhodne riesenie.


Offline

Užívateľ
Užívateľ
c++/Linux  poradit kniznice

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 07.07.2011 23:40

Ja tiez neovladam GTK, ale data 1000x1000 su spracovatelne v realnom case na normalnom PC, nie je to nic hrozne, takze si mal nieco zle. Ja by som na to pouzil OpenGL, ale ako zaciatocnikovi by ti to dlho trvalo. Robil som v MFC, tam som si vykreslil bimapu a klikal na pixely a farbil a potom ju stiahol, nic narocne.

Okrajovo som si vsimol toto volanie:

image=gtk_image_new_from_file("./Resources/red.png");

V realtime v slucke? blaznis? 1000000 krat v jednej sluscke realtimu alokujes?







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

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

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 09.07.2011 20:17

ten riadok si nevsimaj

image=gtk_image_new_from_file("./Resources/red.png");

to som uz davno odkomentoval , teda hned ako mi zmrzol pc a restartoval som ho:), to s tou bitmapou je fajn napad. da sa to robit aj v Linuxe alebo je to len nieco specialne pre MFC ?


Offline

Skúsený užívateľ
Skúsený užívateľ
c++/Linux  poradit kniznice

Registrovaný: 11.01.09
Prihlásený: 17.04.24
Príspevky: 1385
Témy: 9
Bydlisko: Hrinova
Príspevok NapísalOffline : 09.07.2011 20:35

Ak ti vyhovuje ten napad s bitmapou, tak to kludne sprav aj v GTK+. Neviem ci je tam taky ist mechanizmus, ako napr v QT, alebo v SDL vo windowse, ale dam ti aspon nejaky zakladny postup:

1.) vytvoris si kresliacu plochu - platno (canvas) - o pozadovanej velkosti. Nemusi to byt priamo bitmapa, to bol len priklad. Vravim, neviem presne, co vsetko ponuka GTK.
2.) budes osetrovat kliknutie na dany kresliaci objekt
3.) zistis X-ovu a Y-ovu suradnicu v dobe kliknutia na objekt
4.) do pola na danu suradnicu zapises cislo odlisne od toho, ktore tam je ( ak tam povedzme zapisujes iba 0 a 1, tak ich jednoducho znegujes kazdym pristupom)

Skusal som ti najst nejake example na vykreslenie, skus sa v tom trocha povrtat, ako vytvorit nejaku kresliacu plochu.
http://www.jroller.com/RickHigh/entry/gtk_drawing_example_done_in
http://www.gtk.org/tutorial1.2/gtk_tut-23.html


Offline

Užívateľ
Užívateľ
c++/Linux  poradit kniznice

Registrovaný: 02.11.07
Prihlásený: 18.03.15
Príspevky: 470
Témy: 22
Bydlisko: Zilinska Un...
Príspevok NapísalOffline : 10.07.2011 9:36

Presne, ked si najdes dobry tutorial urcite to tam najdes. To su zaklady podobnych tutorialov: bottony,eventy,kreslenie ... . Ak by si to skusal v MFC, mozem ti poslat prednesku, kde sme sa tomu venovali, ale vidim, ze si linuxak, co je fajn. Ja by som si zvolil QT alebo mozes skusit aj Java, to by tiez nebola zla volba. Nech uz si vyberies hocico, v kazdom takomto vyspelom GUI systeme je moznost kreslenia do canvasu, len si to treba nastudovat. Pozor na alokacie, kde ich davas. Pamat alokujes raz v konstruktore a potom do nej vkladas nove a nove data v sluckach, zvycajne :).







_________________
Notebook: HP EliteBook 8740w
You can see my work in my www
Offline

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

Registrovaný: 03.08.10
Prihlásený: 14.07.11
Príspevky: 15
Témy: 5
Príspevok Napísal autor témyOffline : 14.07.2011 20:18

Vdaka za tipy, urcite si nieco z toho vyberiem :)


Odpovedať na tému [ Príspevkov: 9 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Pridanie neštandardnej knižnice visual c++ 2010 Express

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

1

322

03.01.2013 13:40

BX Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladame 3x C/C++ Linux developer- projekt 11/2016-2/2017

v Ponuka práce

1

550

24.10.2016 15:28

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C alebo C++ potrebujem poradiť :)

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

6

2177

25.06.2011 23:56

street_punk Zobrazenie posledných príspevkov

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

v Ponuka práce

0

408

09.08.2013 11:06

Vasinova Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Prekladac na C++ pre Linux

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

5

671

10.06.2009 19:24

Flexor28 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Hladam C++ developera pre linux

v Ponuka práce

0

420

17.08.2015 21:07

flesik Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Potreboval by som poradit s premennymi v C++

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

1

467

20.11.2008 15:57

neutronmind Zobrazenie posledných príspevkov

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

v PHP, ASP

5

871

02.06.2007 10:51

zero0x Zobrazenie posledných príspevkov

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

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

5

475

31.03.2014 16:18

chrono Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

3

816

31.03.2009 7:15

Suzuki2003 Zobrazenie posledných príspevkov

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

v Operačné systémy Microsoft

2

448

03.01.2012 16:52

KeNNi Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Načítanie knižnice PhpWord

v PHP, ASP

2

604

24.06.2023 12:12

jakubv Zobrazenie posledných príspevkov

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

v PHP, ASP

6

635

14.09.2007 11:06

Blackshadow Zobrazenie posledných príspevkov

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

v PHP, ASP

0

703

07.02.2014 9:48

Merlin_sk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Chyba-Nepovolene premiestnenie systemovej kniznice DLL

v Ostatné programy

0

742

31.03.2010 11:15

T0mashK0 Zobrazenie posledných príspevkov

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

v Operačné systémy Unix a Linux

1

796

04.09.2007 16:34

Intelman 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