Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Motorola razr fold, dalla conchiglia al formato a libro. La recensione
Abbiamo provato Motorola razr fold, il pieghevole a libro con display interno LTPO da 8,09 pollici, Snapdragon 8 Gen 5 e batteria da 6000 mAh in 243 grammi. Pennino e custodia sopno già nella confezione, per un foldable che si caratterizza per il pannello luminoso, l'autonomia ottima per la categoria e le fotocamere coerenti e ben sfruttabili. Il listino è di 1999 euro, ma in vendita si trova già a molto meno
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-04-2008, 19:20   #1
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
[C++] Accendere pixel su linux

Ciao ragazzi

vorrei fare un programmino che una volta avviato accenda dei pixel che scelgo io fin quando non viene terminato...

questo su linux

solo che non ho la piu pallida idea di che libreria e che funzioni utilizzare

qualcuno saprebbe indicarmi la strada?
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 20:21   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
io lo so fare su Windows
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 20:45   #3
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Quote:
Originariamente inviato da -Slash Guarda i messaggi
Ciao ragazzi

vorrei fare un programmino che una volta avviato accenda dei pixel che scelgo io fin quando non viene terminato...

questo su linux

solo che non ho la piu pallida idea di che libreria e che funzioni utilizzare

qualcuno saprebbe indicarmi la strada?
ma con X avviato?
senza far partire x potresti usare il frame buffer.
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 20:52   #4
arara
Senior Member
 
L'Avatar di arara
 
Iscritto dal: Aug 2007
Messaggi: 1270
oppure con X avviato puoi usare le xlib:
http://en.wikipedia.org/wiki/Xlib
arara è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 21:00   #5
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Quote:
Originariamente inviato da 71104 Guarda i messaggi
io lo so fare su Windows
beh se me lo dici sapere una cosa in piu non mi fa male
Quote:
Originariamente inviato da vizzz Guarda i messaggi
ma con X avviato?
senza far partire x potresti usare il frame buffer.
si con x avviato
Quote:
Originariamente inviato da arara Guarda i messaggi
oppure con X avviato puoi usare le xlib:
http://en.wikipedia.org/wiki/Xlib
potresti indicarmi la funziona da usare? perchè ce ne sono un casino e non riesco a capure quale fa al caso mio
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 21:10   #6
arara
Senior Member
 
L'Avatar di arara
 
Iscritto dal: Aug 2007
Messaggi: 1270
Quote:
Originariamente inviato da -Slash Guarda i messaggi
potresti indicarmi la funziona da usare? perchè ce ne sono un casino e non riesco a capure quale fa al caso mio
a dir il vero non le ho mai usate, ma leggendo il manual reference penso che dovrebbe essere XDrawPoint(display, drawable, gcontex, x, y).

http://tronche.com/gui/x/xlib/graphi...DrawPoint.html
arara è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 22:05   #7
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Quote:
Originariamente inviato da arara Guarda i messaggi
a dir il vero non le ho mai usate, ma leggendo il manual reference penso che dovrebbe essere XDrawPoint(display, drawable, gcontex, x, y).

http://tronche.com/gui/x/xlib/graphi...DrawPoint.html
ok, si dovrebbe fare al caso mio...

guardandone pero una simile forse mi semplifica ancora piu le cose perchè dovrei in realtà fare un paio di linee rosse sullo schermo...

http://www.tronche.com/gui/x/xlib/gr...XDrawLine.html

Codice:
XDrawLine(display, d, gc, x1, y1, x2, y2)
ma non capisco cosa devo passare a parte le coordinate e come...

cioe a display, d, gc cosa devo passare? io devo semplicemente dare le coordinate ed il colore rosso oppure a scelta dell'utente...

penso che a display debba passare il numero del display, poi gc è di tipo struct ma ha tantissimi parametri a sua volta
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2008, 22:24   #8
arara
Senior Member
 
L'Avatar di arara
 
Iscritto dal: Aug 2007
Messaggi: 1270
Guardando gli esempi dovrebbe venire cosi:

Display *display = XOpenDisplay(NULL);
int screen = DefaultScreen(display);
Window window = XCreateSimpleWindow(display, RootWindow(display, screen), 1, 1, 640, 480, 1, BlackPixel(display, screen), WhitePixel(display, screen));
XDrawLine(display, window, DefaultGC(display, screen), 50, 50, 100,100);

prova a guardare questo tutorial:
http://tronche.com/gui/x/xlib-tutorial/
arara è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2008, 09:55   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da -Slash Guarda i messaggi
beh se me lo dici sapere una cosa in piu non mi fa male
banalisssssimo: http://msdn2.microsoft.com/en-us/library/ms532304.aspx
come DC (primo parametro) basta che usi quello che ottieni dalla chiamata GetDC(NULL), che sarebbe quello associato allo schermo:
http://msdn2.microsoft.com/en-us/library/ms533241.aspx
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 06-04-2008, 23:19   #10
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
ok grazie ad entrambi...

su linux devo vedere con calma il nome del pacchetto da installare su ubuntu

su windows invece ho fatto cosi

Codice:
#include <windows.h>
[...]

SetPixel( GetDC(NULL), i, j, RGB(255,0,0) );
ma eclipse cdt mi da errore: undefined reference to 'SetPixel@16'

penso cio sia dovuto ad una mancata lettura corretta da parte del linker di windows.h o qualcosa del genere, e presuppongo che debba passare qualche cosa al linker ma non saprei neanche come fare

lo stesso errore lo da anche code::blocks... come risolvo ?
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 06-04-2008, 23:36   #11
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
doppio, scusate
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 08:17   #12
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
su windows sono riuscito a compilarlo con code::blocks creando un nuovo progetto: applicazione grafica win32... su eclipse non ho ancora capito come fare e sono in attesa di delucidazioni.

con code::blocks sono riuscito a compilarlo, ma innanzi tutto mi crea un eseguibile di 1.3 mb che mi sembra un pochino tanto per il codice che ho scritto poi appena avviato si rallenta tutto in una maniera indicibile...

Codice:
#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main(int argc, char* argv[]) {
	int width = 1280,
		height = 800,
		size = 10;

    if( argc == 3) {
        width = atol(argv[1]);
		height = atol(argv[2]);
		size = atol(argv[3]);
        }
    while(1) {
	for(int i = width/2 - size; i <= width/2 + size; i++ )
		SetPixel( GetDC(NULL), i, height/2, RGB(255,0,0) );

	for(int j = height/2 - size; j <= height/2 + size; j++ )
		SetPixel( GetDC(NULL), width/2, j, RGB(255,0,0) );
    }

	system("PAUSE");
	return 0;

}
se non metto il while(1) prima dei due for mi appaiono i pixel per un secondo e poi l'applicazione si chiude, io invece vorrei rimanessero sempre fin quando io non chiudo l'applicazione, come fa ora insomma, ma senza rallentare in questo modo il sistema e creando se possibile un eseguibile piu piccolo

Ultima modifica di -Slash : 07-04-2008 alle 15:04.
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 08:49   #13
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da -Slash Guarda i messaggi
se non metto il while(1) prima dei due for mi appaiono i pixel per un secondo e poi l'applicazione si chiude, io invece vorrei rimanessero sempre fin quando io non chiudo l'applicazione, come fa ora insomma, ma senza rallentare in questo modo il sistema e creando se possibile un eseguibile piu piccolo
Bhe, quel while infinito contenente due cicli for ti va un pochino a monopolizzare la CPU, ci vorrebbe uno sleep di 1 microsec.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 15:34   #14
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Bhe, quel while infinito contenente due cicli for ti va un pochino a monopolizzare la CPU, ci vorrebbe uno sleep di 1 microsec.
ho messo uno Sleep(250) precedentemente, perchè solo a partire da quel numero riesco ad abbassare un po' la cpu portandola a 11-14%, aumentando troppo poi si vede...

ma mi sembra ancora troppo, e credo ci sia un modo migliore, perchè ho scaricato un altro programma che fa la stessa cosa e prende lo 0% di cpu
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 18:49   #15
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Slash, potevi dirlo prima che volevi colorare una linea e non solo un pixel
colorare un pixel alla volta a suon di SetPixel è estremamente inefficiente perché ciascuna SetPixel richiede uno switch in kernel mode e un bel po' di altre operazioni (tipo la mappatura dei colori di sistema se per caso il colore che gli hai dato è un colore di sistema) per poi alla fine... settare pochi bytes
tutto quel popo' di operazioni puoi farlo solo O(1) volte anziché O(N) volte (N lunghezza della linea in pixels) usando le funzioni MoveToEx e LineTo:
http://msdn2.microsoft.com/en-us/lib...47(VS.85).aspx
http://msdn2.microsoft.com/en-us/lib...56(VS.85).aspx

inoltre non serve che cerchi il DC ogni volta: chiama GetDC una volta sola, salvati l'HDC e usalo per le chiamate seguenti.

per quanto riguarda le dimensioni dell'eseguibile, ad ingigantirle oltremodo è il codice di inizializzazione del runtime del C++ che la maggior parte dei compilatori del mondo includono automaticamente (pensa ad esempio al costruttore dell'oggetto cout, oggetto che è sempre presente in un programma C++; questo è solo un esempio).

per rimuovere tale codice (una volta che sei sicuro che non lo userai mai, ma ti consiglierei di lasciarlo) devi cercare tra le opzioni della linea di comando del MinGW.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 07-04-2008, 23:46   #16
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
ok grazie, ho modificato usando le due funzioni e seguendo l'esempio sul sito msdn...

ma non esce niente
Codice:
#define WINVER 0x0501
#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main(int argc, char* argv[]) {
	int width = 1280,
		height = 800,
		size = 10;

    if( argc == 3) {
        width = atol(argv[1]);
		height = atol(argv[2]);
		size = atol(argv[3]);
        }
    HDC hdc;
    HWND hwnd;

    hdc = GetDC(hwnd);
    while(1) {
        MoveToEx(hdc,  (width/2) - 10,  height/2, NULL);
        LineTo(hdc, (width/2) + 10,  height/2);
        MoveToEx(hdc,  width/2, (height/2) - 10, NULL);
        LineTo(hdc, width/2,  (height/2) + 10);
    }

    ReleaseDC(hwnd, hdc);

	system("PAUSE");

	return 0;

}
anche sostituendo hwnd con null

e poi non ho capito come passo il colore

Ultima modifica di -Slash : 07-04-2008 alle 23:51.
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 13:27   #17
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
sostituendo hwnd con NULL a me funziona perfettamente...
per passare il colore a questo punto devi usare un oggetto Pen; lo crei con CreatePen e lo imposti del DC con SelectObject:
http://msdn2.microsoft.com/en-us/library/ms535467.aspx
http://msdn2.microsoft.com/en-us/lib...72(VS.85).aspx

alla fine ricordati di deselezionarlo (sempre con SelectObject) e di distruggerlo con DeleteObject:
http://msdn2.microsoft.com/en-us/library/ms533225.aspx

Ultima modifica di 71104 : 08-04-2008 alle 13:30.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 13:36   #18
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
rettifico il mio post precedente: ho scoperto questa utile funzione:
http://msdn2.microsoft.com/en-us/lib...37(VS.85).aspx

grazie ad essa non ti serve di creare un nuovo oggetto Pen; inoltre chiarisco meglio un punto: SelectObject non offre un modo per deselezionare un oggetto, ma semplicemente per selezionarne un altro al posto suo (cosa che provoca la "deselezione" del primo).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 15:47   #19
-Slash
Senior Member
 
L'Avatar di -Slash
 
Iscritto dal: Mar 2006
Messaggi: 2516
in effetti funziona, evidentemente si era incantato prima, perchè non funzionava

l'unica cosa che non va è il colore, il codice è il seguente ma è sempre nero... perdonami per la mia stoltezza

Codice:
#define WINVER 0x0501
#include <iostream>
#include <cstdlib>
#include <windows.h>

using namespace std;

int main(int argc, char* argv[]) {
	int width = 1280,
		height = 800,
		size = 10;

    if( argc == 3) {
        width = atol(argv[1]);
		height = atol(argv[2]);
		size = atol(argv[3]);
        }

    HDC hdc;
    hdc = GetDC(NULL);

    SetDCPenColor(hdc,RGB(255, 0, 0));
    while(1) {
        Sleep(1);
        MoveToEx(hdc,  (width/2) - (size/2),  height/2, NULL);
        LineTo(hdc, (width/2) + 1 + (size/2),  height/2);
        MoveToEx(hdc,  width/2, (height/2) - (size/2), NULL);
        LineTo(hdc, width/2,  (height/2) + 1 + (size/2));
    }

    ReleaseDC(NULL, hdc);

	system("PAUSE");

	return 0;

}
poi non ho capito bene il fatto della riduzione della dimensione...

grazie per la pazienza, poi dopo spero di riuscirlo a fare su linux
-Slash è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2008, 16:10   #20
vizzz
Senior Member
 
L'Avatar di vizzz
 
Iscritto dal: Mar 2006
Città: Bergamo
Messaggi: 2499
Codice:
SetDCPenColor(hdc,RGB(255, 0, 0));
__________________
ho concluso con: kvegeta, doctordb, Leland Gaunt.
vizzz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Nokia Innovation Day 2026: la sovranità europea passa dal mercato unico e dai laboratori italiani del gruppo Nokia Innovation Day 2026: la sovranità e...
Hitman: Absolution si prepara al debutto...
ROG XBOX Ally X20 disponibile in Italia:...
Un banner pubblicitario può bastare per ...
Elon Musk è riuscito a farci (far...
Microsoft svela MAI-Base-2, un modello M...
Offerte Amazon fino al -50%: AirPods Pro...
Engwe fa sul serio: e-bike economica con...
La PEC italiana punta all'Europa: Aruba ...
Meta rilascia Muse Spark Open: per esegu...
Da Apple a Nvidia, le invenzioni tecnolo...
NVIDIA Hyperion sulle future Volvo: la c...
Xiaomi 17T e 17T Pro in offerta Amazon: ...
NASA e JAXA insieme per esplorare le lun...
Segnali una falla e rischi un reato: il ...
Haier, TV 4K in offerta su Amazon: QLED ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:15.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v