Italian community of Lazarus and Free Pascal

Programmazione => Graphics => Topic aperto da: Loryea - Ottobre 19, 2011, 03:43:50 pm

Titolo: Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 19, 2011, 03:43:50 pm
Salve, volevo chiedervi come posso spostare un immagine fattasenza chiudere, riaprire la finestra grafica indicando la nuova posizione.
Volevo anche sapere come é possibile passare dalla finestra grafica alla normale (crt) senza comunque chiudere la grafica.

Grazie.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 19, 2011, 03:47:24 pm
Detta così non ci ho capito molto a dir la verità!
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 20, 2011, 08:21:16 am
Inoltre l'immagine dove si trova? In una picture box? Tu vuoi spostare la TPicture o la Form che contiene la TPicture?
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 20, 2011, 04:54:25 pm
Intendevo dire un'immagine in generale, ad'esempio:
Rectangle(0,0,375,883);

E poi non é importante questo nella mia domanda, se ad esempio scrivo:

Codice: [Seleziona]
{...}
Var GD,GM:Integer;
{...}
GD:=detect;
initgraph(Gd,Gm,'C:\FPC');
{Anche se non scrivo nient'altro, come faccio ad attivare (ovvero mostrare in primo piano) la finestra CRT senza usare 'Closegraph'?
Se no, si potrebbe ridurre la finestra grafica ad icona?}

Capito ora?


Riguardo invece la prima domanda, volevo chiedere qual'é il codice che bisogna scrivere per effettuare uno spostamento di una qualsiasi immagine (come ad esempio: Rectangle(0,0,375,883);) in un'altra posizione (ad esempio Rectangle(375,883,999,321);)
Senza fare così:                                 
Codice: [Seleziona]
{...}
Rectangle(0,0,375,883);
Delay(1000);
Closegraph;
Rectangle(375,883,999,321);
{...}

Capito ora?


Grazie.

P.S.: Per qualsiasi risposta seguire l'esempio Rectangle per farmi capire un po meglio.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 20, 2011, 05:12:59 pm
Codice: [Seleziona]
procedure TForm1.Button1Click(Sender: TObject);
Var
   GD,GM:SmallInt;
begin
  {...}
  {...}
  GD:=detect;
  GM:=detect;
  initgraph(Gd,Gm,'C:\FPC');
  {Anche se non scrivo nient'altro, come faccio ad attivare (ovvero mostrare in primo piano) la finestra CRT senza usare 'Closegraph'?
  Se no, si potrebbe ridurre la finestra grafica ad icona?}
  Rectangle(0,0,375,883);
  delay(10000);
[b]  Closegraph;
  initgraph(Gd,Gm,'C:\FPC');
[/b]  Rectangle(375,883,999,321);
end;   

Per far funzionare il tuo codice però bisogna reinizializzarlo dopo averlo chiuso. Non capisco qual'è il tuo problema, così funziona. Altri modi non ne conosco. Non so se esiste una funzione che ti pulisce il graph, perchè nel caso ci fosse non si necessita di chiuderlo e riaprirlo. Dammi un po' più di tempo per vedere se ci riesco.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 20, 2011, 05:15:31 pm
Codice: [Seleziona]
Var
   GD,GM:SmallInt;
begin
  {...}
  {...}
  GD:=detect;
  GM:=detect;
  initgraph(Gd,Gm,'C:\FPC');
  {Anche se non scrivo nient'altro, come faccio ad attivare (ovvero mostrare in primo piano) la finestra CRT senza usare 'Closegraph'?
  Se no, si potrebbe ridurre la finestra grafica ad icona?}
  Rectangle(0,0,375,883);
  delay(10000);
[b]  //Closegraph;[/b]
  initgraph(Gd,Gm,'C:\FPC');
  Rectangle(375,883,999,321);

Se ometti la parte in grassetto, che io ho commentato ti togli anche quel fastidioso chiudi/apri della finestra su qui stai disegnando.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 20, 2011, 09:46:08 pm
Grazie tanto, ma credo di aver capito male.
Se io scrivo ad esempio:
Codice: [Seleziona]
{...}
Initgraph(Gd,Gm,'C:\FPC');
Rectangle(0,0,10,10);
dealy(10000);
Gd:=detect;
Initgraph(Gd,Gm,'C:\FPC');
Rectangle(10,10,20,20);
{...}
Dovrebbe disegnarmi un rettangolo a coordinate 0,0,10,10 e poi, dopo 10 sec. spostarlo in 10,10,20,20?

Credo che ci siamo capiti male.

Il mio scopo era quello di SPOSTARE una figura disegnata in graph di posizione, senza chiudere e riaprire la grafica.

Ma facendo una ficerca, traducendo qualche pagina del freepascal originale, ho capito che "Deletegraph" é una specie di clrscr per grafica e così si risolve uno dei miei due problemi.

(rectangle(0,0,10,10); delay(1000); deletegraph; rectangle(10,10,20,20);)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 20, 2011, 09:56:15 pm

Ma facendo una ficerca, traducendo qualche pagina del freepascal originale, ho capito che "Deletegraph" é una specie di clrscr per grafica e così si risolve uno dei miei due problemi.

(rectangle(0,0,10,10); delay(1000); deletegraph; rectangle(10,10,20,20);)

Buono a sapersi. Per la seconda problematica, non saprei proprio. Io la grafica l'ho sempre bazzicata poco. Bisogna aspettare il parere di qualcuno più afferrato, mi sa!

Sorry
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 21, 2011, 11:03:25 am
Ciao, per la seconda tua domanda. Ovvero tornare alla schermata originale senza chiudere quella che hai lanciato penso che può esserti d'aiuto questo:

http://wiki.freepascal.org/Asynchronous_Calls

Prova, io non ne ho avuto il tempo. Però secondo logica dovrebbe essere quello che cercavi. Oppure spulciati la programmazione multithreading dovrebbe fare al caso tuo. Scusa ma in questo momento non riesco a fare una prova.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 21, 2011, 06:34:25 pm
http://translate.google.it/translate?hl=it&sl=en&u=http://www.freepascal.org/docs-html/rtl/index.html&ei=ZJ2hTt3jIo2Mswbv76yPAw&sa=X&oi=translate&ct=result&resnum=1&ved=0CB8Q7gEwAA&prev=/search%3Fq%3DUnits%2B%2BBaseUnix%2B%2B%2B%2BBasic%2Bunix%2Bfunctionality%2BClasses%2B%2B%2B%2BBasic%2Bclasses%2Bfor%2BRTL%2Bclocale%2B%2B%2B%2BInitialize%2Binternationalization%2Bsettings%2Bfrom%2Bthe%2BC%2Blibrary%2Bcmem%2B%2B%2B%2BMemory%2Bmanager%2Breplacement%2Busing%2Bthe%2BC%2Bmemory%2Bmanager%2BCrt%2B%2B%2B%2BCRT%2B-%2BTurbo%2BPascal%2Bscreen%2Band%2Bkeyboard%2Bhandling%2Bunit%2Bcthreads%2B%2B%2B%2BInitialize%2Bthe%2Bthread%2Bmanager%2Bwith%2Ba%2BPOSIX%2Bthread%2Bmanager%2Bctypes%2B%2B%2B%2BCommon%2BC%2Btype%2Bdefinitions%2Bcwstring%2B%2B%2B%2BImplement%2Bthe%2Bwidestring%2Bmanager%2Bwith%2Ba%2BC%2Blibrary%2Bbased%2Bimplementation%2Bdateutils%2B%2B%2B%2BDate/Time%2Bmanipulation%2Broutines.%2BDos%2B%2B%2B%2BDOS%2B-%2BTurbo%2BPascal%2BMS-DOS%2Binterface%2Bdxeload%2B%2B%2B%2BLoad%2BDXE%2Bfile%2Bin%2Bto%2Bmemory%2Bdynlibs%2B%2B%2B%2BCross-platform%2Bsupport%2Bfor%2Bdynamically%2Bloadable%2Blibraries%2Bemu387%2B%2B%2B%2BLoad%2Bcoprocessor%2Bemulation%2Bsupport%2Bexeinfo%2B%2B%2B%2BReturn%2Bexecutable%2Binformation%2Bgetopts%2B%2B%2B%2BGNU%2Bcompatible%2Baccess%2Bto%2Bcommand-line%2Boptions.%2Bgo32%2B%2B%2B%2BGO32%2B-%2Bacces%2Bto%2Bthe%2B32-bit%2BDOS%2Bextender%26hl%3Dit%26client%3Dsafari%26rls%3Den%26prmd%3Dimvns (http://translate.google.it/translate?hl=it&sl=en&u=http://www.freepascal.org/docs-html/rtl/index.html&ei=ZJ2hTt3jIo2Mswbv76yPAw&sa=X&oi=translate&ct=result&resnum=1&ved=0CB8Q7gEwAA&prev=/search%3Fq%3DUnits%2B%2BBaseUnix%2B%2B%2B%2BBasic%2Bunix%2Bfunctionality%2BClasses%2B%2B%2B%2BBasic%2Bclasses%2Bfor%2BRTL%2Bclocale%2B%2B%2B%2BInitialize%2Binternationalization%2Bsettings%2Bfrom%2Bthe%2BC%2Blibrary%2Bcmem%2B%2B%2B%2BMemory%2Bmanager%2Breplacement%2Busing%2Bthe%2BC%2Bmemory%2Bmanager%2BCrt%2B%2B%2B%2BCRT%2B-%2BTurbo%2BPascal%2Bscreen%2Band%2Bkeyboard%2Bhandling%2Bunit%2Bcthreads%2B%2B%2B%2BInitialize%2Bthe%2Bthread%2Bmanager%2Bwith%2Ba%2BPOSIX%2Bthread%2Bmanager%2Bctypes%2B%2B%2B%2BCommon%2BC%2Btype%2Bdefinitions%2Bcwstring%2B%2B%2B%2BImplement%2Bthe%2Bwidestring%2Bmanager%2Bwith%2Ba%2BC%2Blibrary%2Bbased%2Bimplementation%2Bdateutils%2B%2B%2B%2BDate/Time%2Bmanipulation%2Broutines.%2BDos%2B%2B%2B%2BDOS%2B-%2BTurbo%2BPascal%2BMS-DOS%2Binterface%2Bdxeload%2B%2B%2B%2BLoad%2BDXE%2Bfile%2Bin%2Bto%2Bmemory%2Bdynlibs%2B%2B%2B%2BCross-platform%2Bsupport%2Bfor%2Bdynamically%2Bloadable%2Blibraries%2Bemu387%2B%2B%2B%2BLoad%2Bcoprocessor%2Bemulation%2Bsupport%2Bexeinfo%2B%2B%2B%2BReturn%2Bexecutable%2Binformation%2Bgetopts%2B%2B%2B%2BGNU%2Bcompatible%2Baccess%2Bto%2Bcommand-line%2Boptions.%2Bgo32%2B%2B%2B%2BGO32%2B-%2Bacces%2Bto%2Bthe%2B32-bit%2BDOS%2Bextender%26hl%3Dit%26client%3Dsafari%26rls%3Den%26prmd%3Dimvns)

Ecco il madornale link della traduzione di una pagina che credo risolva il primo problema.

Non vorreei essere troppo indiscreto, ma hai citato la TPicture, cos'é? Come funziona?
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 21, 2011, 07:19:24 pm
...è un oggetto per vedere le immagini in una form...niente che riguardi il tuo discorso. Solo che quando l'ho nominata non avevo capito dove volevi arrivare tu.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 22, 2011, 01:01:06 pm
Ho capito.

Pensavo fosse un programma per tradurre immagini in un'elenco di coordinate, sarebbe davvero bello un programma così!
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 23, 2011, 10:59:50 am
Ho capito.

Pensavo fosse un programma per tradurre immagini in un'elenco di coordinate, sarebbe davvero bello un programma così!

Spiegati meglio...magari esiste già. O si potrebbe pensare di farlo. Ma ho bisogno di più dettagli perchè io di grafica non ho mai fatto nulla.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 25, 2011, 09:14:48 pm
Non so se esista un programma del genere ma sarebbe davvero bello se esistesse, il programma che intendo, é un editor di immagini (come ad esempio picasa, Paint, visualizzatore live messanger, ecc.) dove si può tradurre l'immaggine (es. cartina geografica del mondo, muta);
in un elenco di pixel - cosa da sapere che tramite una procedura o funzione che non mi ricordo ma che sta scrita sicuramente sul sito di freepascal (-->documentation --> run time library--> Graph --> functions and procedure)  con cui si può colorare un pixel di un determinato colore, così da fare: Funzione( e copiarlo tantissime volte, copiare l'elenco di pixel, incollarlo nel codice e chiudere tutte le function aperte, non so se sono stato abbastanza chiaro-
Il risultato é che posso copiare un'immagine nel mio archivio e utilizzarla nei miei programmi, come se fosse html, indicando nel codice tutti i pixel che deve colorare e magari anche di che colore.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 25, 2011, 11:14:19 pm
Scusa, ma sarò tonto io perchè non capisco proprio  :'(
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 26, 2011, 09:53:11 pm
Tanto non credo proprio che esista, ma comunque cercherò di spiegarti bene una volta per tutte:
Sai comé la modalità grafica, giusto? In questa modalita si possono disegnare delle figure, inserendo le coordinate di alcuni pixel.
Ovviamente é molto difficile orientarsi solo inserendo le coordinate dei pixel, giusto?
Allora mi chiedevo se esistesse un editor di immagini, come ad esempio Paint, che ti possa dare un elenco di coordinate del disegno che hai scaricato da internet o fatto tu, con annesso colore. (ad esempio 254,763,FF000  =  alle coordinate pixel 254 e 763 c'é un pixel colorato di FF000 [colore]).
In questo modo, io, potrei inserire in un codice la funzione che permette di colorare un pixel nella modalità grafica e aprire la parentesi, per inserire i parametri; copiare questa funzione e incollarla tante volte, copiare l'elenco dei pixel e inserirlo nel codice.
L'IMMAGINE DISEGNATA IN QUELL'EDITOR IMMAGINI VERRA' TRASFERITA NELL PROGRAMMA CONCLUSO TRAMITE L'INSERIMENTO DEI VARI COLORI CHE DEVONO ASSUMERE I DIVERSI PIXEL.

Capito???
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 26, 2011, 11:56:10 pm
Ora si  :D

In effetti sarebbe una bella utility. Si può pensare di svilupparla noi. Usando questa community per coordinarci.

Che dici?
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Ottobre 27, 2011, 09:44:49 am
A questo punto sono io che non credo di aver capito il problema  ;D

Perché usare un programma esterno? Con fcl-image si può caricare qualsiasi tipo di immagine in memoria, accedere al canvas, alla palette, leggere e scrivere pixel, ecc.
http://wiki.freepascal.org/fcl-image
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Ottobre 27, 2011, 03:25:35 pm
A questo punto sono io che non credo di aver capito il problema  ;D

Perché usare un programma esterno? Con fcl-image si può caricare qualsiasi tipo di immagine in memoria, accedere al canvas, alla palette, leggere e scrivere pixel, ecc.
http://wiki.freepascal.org/fcl-image


Interessantissimo, io proprio non lo sapevo!
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: xinyiman - Ottobre 27, 2011, 03:36:09 pm
Perfetto :)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 13, 2011, 10:39:21 pm
A questo punto sono io che non credo di aver capito il problema  ;D

Perché usare un programma esterno? Con fcl-image si può caricare qualsiasi tipo di immagine in memoria, accedere al canvas, alla palette, leggere e scrivere pixel, ecc.
http://wiki.freepascal.org/fcl-image

Sono andato nel sito, però e non ci ho capito moltissimo, come faccio ha importare immagini?
Se, sai farlo Legolas, potresti scriverci un programma esempio oppure potresti dirci che funzioni, procedure, classi ecc. ha questa libreria e come usarle per favore, perché io proprio non ci capisco  :-\
Mi piacerebbe invece capire, per un mio nuovo progetto...
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 14, 2011, 12:08:03 pm
Uhm... a dire la verità non ho mai usato quella libreria. Se mi dai un po' di tempo vedo di capire come funziona e ti preparo un esempio minimo :)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 14, 2011, 02:14:36 pm
Ok, prova a vedere se quest'esempio ti è di aiuto:

Codice: [Seleziona]
program project1;

{$mode objfpc}{$H+}

uses
  Classes, sysutils,
  FPimage, FPCanvas, FPImgCanv,

  FPWritePNG, FPReadPNG, // per scrivere e leggere files PNG

  FPWriteBMP; // per scrivere files BMP


procedure CreaPrimaImmagine;
var
  image : TFPCustomImage;
  canvas : TFPcustomCanvas;
  writer : TFPCustomImageWriter;
begin
  // creiamo l'immagine
  image := TFPMemoryImage.create(100, 100);

  // creiamo un canvas attaccato a image da modificare
  canvas := TFPImageCanvas.create(image);

  // creiamo un oggetto writer di tipo PNG
  // per scrivere l'immagine sul disco
  writer := TFPWriterPNG.create;

  // impostiamo gli attributi per la scrittura sul canvas
  canvas.Pen.Mode := pmCopy;
  canvas.Pen.Style := psSolid;
  canvas.Pen.Width := 3;
  canvas.Pen.FPColor :=  FPColor(65535, 0, 65535, 65535);

  // disegniamo un rettangolo
  canvas.Rectangle(10, 10, 60, 60);

  // salviamo l'immagine su file
  image.SaveToFile('rettangolo_01.png', writer);

  // rilasciamo le risorse
  Canvas.Free;
  image.Free;
  writer.Free;
end;

procedure ModificaImmagine;
var
  image: TFPCustomImage;
  canvas : TFPcustomCanvas;
  reader: TFPCustomImageReader;
  writer: TFPCustomImageWriter;
begin
  // creiamo l'immagine
  Image := TFPMemoryImage.Create(100, 100);

  // creiamo un canvas attaccato a image da modificare
  canvas := TFPImageCanvas.create(image);

  // creiamo un reader PNG per leggere l'immagine da disco
  Reader := TFPReaderPNG.Create;

  // creiamo un writer BMP per salvare l'immagine su disco
  writer := TFPWriterBMP.Create;

  // carichiamo l'immagine da disco
  Image.LoadFromFile('rettangolo_01.png', Reader);

  // impostiamo gli attributi per la scrittura sul canvas
  canvas.Pen.Mode := pmCopy;
  canvas.Pen.Style := psSolid;
  canvas.Pen.Width := 1;
  canvas.Pen.FPColor :=  FPColor(0, 0, 65535, 65535);

  // tracciamo una circonferenza
  canvas.Ellipse(50, 50, 70, 70);

  // coloriamo alcuni pixel di bianco
  canvas.Colors[80, 80] := FPColor(65535, 65535, 65535, 65535);
  canvas.Colors[80, 81] := FPColor(65535, 65535, 65535, 65535);
  canvas.Colors[80, 82] := FPColor(65535, 65535, 65535, 65535);
  canvas.Colors[80, 83] := FPColor(65535, 65535, 65535, 65535);

  // salviamo l'immagine BMP su file
  image.SaveToFile('rettangolo_02.bmp', writer);

  // rilasciamo le risorse
  canvas.Free;
  image.Free;
  reader.Free;
  writer.Free;
end;

begin
  WriteLn('Esempio di utilizzo di fpimage');
  WriteLn('Premere un tasto...');
  ReadLn;

  WriteLn('Creazione dell''immagine di partenza...');
  CreaPrimaImmagine;
  WriteLn('Fatto! L''immagine PNG è stata salvata su file.');
  WriteLn('Premere un tasto...');
  ReadLn;

  WriteLn('Modifica dell''immagine di partenza e salvataggio in un altro formato...');
  ModificaImmagine;
  WriteLn('Fatto! L''immagine è stata modificata e salvata su file di tipo BMP.');
  WriteLn('Premere un tasto per terminare.');
  ReadLn;

end.                       

L'esempio genera una prima immagine PNG con sfondo nero e un quadrato fucsia e la salva su file (rettangolo_01.png). Successivamente riapre l'immagine appena salvata, la modifica aggiungendo una circonferenza blu e quattro pixel bianchi, quindi la salva in formato BMP (rettangolo_02.bmp).

La comodità di questa libreria è che permette di modificare ogni tipo di immagine come se si stesse modificando un semplice canvas della VCL. Basta quindi studiarsi qualche tutorial sull'utilizzo dei canvas per essere operativi :)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 14, 2011, 03:29:09 pm
Non potresti riprodurre l'esempio in free-pascal, per favore?
Ma se non vuoi non farlo, va già bene così.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 14, 2011, 03:38:12 pm
E' già compilabile con free-pascal ;)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 14, 2011, 03:48:44 pm
mmh, non é che si potrebbe fare il contrario di quello che ha fatto il programma ovvero importare immagini già salvate in modalità grafica (o altre modalità)?
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 14, 2011, 03:58:07 pm
E' quello che fa la procedura ModificaImmagine: carica un'immagine già presente sul disco, la modifica e la salva.

Forse non ho capito cosa intendi con "immagini già salvate in modalità grafica (o altre modalità)". Le immagini sono immagini; possono essere salvate/caricate in/da formati differenti, ma la sostanza è sempre quella.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 14, 2011, 08:11:35 pm
Immagini già salvate, in modalità grafica  :o  ;D

Cioé: Realizzare un programma che riesca ha trasferire un'immagine salvata, nello schermo.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 18, 2011, 11:02:30 pm
Veramente la cosa é un po' urgente perché ho iniziato un progetto un po' ambizioso, e vorrei fare una grafica molto realistica (es. Fifa o Pes o GTA), e siccome so che non posso cavarmela solamente con Rectangle(); Circle(); Arc(); e utilizzando PutPixel(); (procedura che illuumina un pixel preciso) più volte non si finisce mai, ho provato a scaricare/disegnare immagini per questo nuovo videogioco. E mi serve questa procedura/libreria per importare queste immaggini o disegni nel programma (precisamente nella modalità grafica) e utilizzarli nel gioco.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 19, 2011, 01:51:40 pm
Ahhhhhhh, ora credo di avere capito cosa ti serve :D

Hai bisogno di una libreria che si appoggi su directx o opengl. Io ti consiglio di dare un'occhiata a SDL:

http://freepascal-meets-sdl.net/

Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 19, 2011, 09:00:28 pm
Ahhhhhhh, ora credo di avere capito cosa ti serve :D

Hai bisogno di una libreria che si appoggi su directx o opengl. Io ti consiglio di dare un'occhiata a SDL:

http://freepascal-meets-sdl.net/

MAGNIFICO!!!!
Non solo ho trovato quello che cercavo, ma ho trovato in questa libreria SDL, altre funzioni che, se non fosse stato per questa libreria, avrei chiesto in continuazione!

Solamente che non riesco a scaricarlo, nel sito che mi hai fatto vedere mescolava, varie versioni e io sinceramente non ci ho capito niente.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 19, 2011, 10:36:27 pm
Puoi usare tranquillamente la versione che viene distribuita con freepascal. Devi soltanto scaricarti le dll da qui:

http://www.libsdl.org/release/SDL-1.2.14-win32.zip

Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 20, 2011, 11:19:18 am
Grazie ma .pas non si può avere?
Se no non fa niente.
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 20, 2011, 09:44:53 pm
Qui ci sono gli header in pascal di SDL, se è questo quello che cercavi:

http://svn.freepascal.org/cgi-bin/viewvc.cgi/tags/release_2_6_0_rc1/packages/sdl/src/
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 21, 2011, 10:43:58 pm
Girando un po' su internet ho capito che la libreria SDL non é del tutto pascal, ansi, lo é poco:
http://www.libsdl.org/intro.it/usinginit.html (http://www.libsdl.org/intro.it/usinginit.html)

Si può avere della documentazione italiana solo sulla SDL Pascal???
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Legolas - Novembre 21, 2011, 11:03:28 pm
La libreria è scritta in C e viene distribuita, tra gli altri modi, anche sotto forma di dll. Una dll contiene diverse funzioni, che possono essere utilizzate con qualsiasi linguaggio di programmazione, a patto che esistano gli "header" tradotti in quel linguaggio, ovvero - semplificando - una "interfaccia" che contenga le dichiarazioni delle funzioni presenti nella libreria.
Quindi, nell'esempio delle SDL, la funzione SDL_Init è stata creata in c in questo modo:
Codice: [Seleziona]
int SDL_Init(Uint32 flags)
{
#if !SDL_THREADS_DISABLED && SDL_THREAD_PTH
        if (!pth_init()) {
                return -1;
        }
#endif

        /* Clear the error message */
        SDL_ClearError();

        /* Initialize the desired subsystems */
        if ( SDL_InitSubSystem(flags) < 0 ) {
                return(-1);
        }

        /* Everything is initialized */
        if ( !(flags & SDL_INIT_NOPARACHUTE) ) {
                SDL_InstallParachute();
        }
        return(0);
}
Questo codice è stato quindi compilato nella libreria SDL.dll. In c è possibile accedere alla funzione SDL_Init contenuta nella dll utilizzando gli header in c, dove la dichiarazione della funzione è la seguente:
Codice: [Seleziona]
int SDL_Init(Uint32 flags);

La stessa dll è utilizzabile in pascal grazie agli header tradotti, che contengono la dichiarazione precedente tradotta in questo modo:

Codice: [Seleziona]
function SDL_Init(flags:Uint32):longint;cdecl;external 'SDL';

La comodità della traduzione degli header sta anche nel fatto che non è necessario tradurre tutta la funzione, ma basta avere la dll e tradurre soltanto la sua dichiarazione per poterla utilizzare.

Fatto questo dovuto chiarimento, non credo che esista una documentazione su SDL specifica per pascal, e tanto meno in italiano. Puoi comunque utilizzare la documentazione in c, dal momento che, come detto sopra, le funzioni sono identiche  ;)
Titolo: Re:Spostare immagini e passare dal grafico al CRT
Inserito da: Loryea - Novembre 22, 2011, 09:00:45 pm
Il problema é che non esistono header per uomo, in documentazione, gli esempi e i riferimenti sono tutti volti al C, io non ci posso capire molto (e poi, da una libreria complicata come questa...)