Jump to content

Recommended Posts

Posted

Boa tarde,

Eu tenho um problema de momento num projecto que estou a construir, está tudo feito, mas há algo que está a falar que é screenshots a um jogo enquanto estou a jogar, já pesquisei bastante na net mas não encontro nada em concreto, encontrei um programador a falar que talves fosse do aero, então eu desliguei isso enquanto isto tirava o print, e mesmo assim nada.

Se alguém souber uma library ou dll para isso e fácil de usar, que me diga por favor.

Cumprimentos!

Posted

Boa noite,

//inicia variáveis
count += 1;
string counter = count.ToString();
int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
//força o desenho de uma frame no buffer
Draw(new GameTime());
//obtem a imagem que foi colocada no buffer
int[] backBuffer = new int[w * h];
GraphicsDevice.GetBackBufferData(backBuffer);

//copia-a para uma textura 2D
Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
texture.SetData(backBuffer);

//grava no disco com o StreamWriter
Stream stream = File.OpenWrite(counter + ".jpg");
texture.SaveAsJpeg(stream, w, h);
//faz o dispose dos objectos
stream.Dispose();
texture.Dispose();
//Dó sustenido é realmente muito cool!

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted (edited)

Caro Apocsantos, hoje durante a tarde irei testar, porque de momento não me encontro com o Portátil, mas dou te desde já os agradecimentos, pois se funcionar a minha pap fica concluída 🙂

EDIT***

Bem já estive a testar e na variável count dá erro (não foi declarada antes penso, provávelmente seja evento ou etc).

quanto à biblioteca do GraphicsDevice vou tentar descobrir para não ter a "papa toda feita".

Muito obrigado desde já!

Edited by sYnced
Posted (edited)

Bem estive a pesquisar e também encontrei isto: http://clifton.me/screenshot-xna-csharp/

já descobri que XNA serve para desenvolver jogos também, mas a chamar a biblioteca estou a começar a ficar frustado!

EDIT****

Bem já percebi que tenho de instalar um pacote, mas tenho uma questão, quem usufruir da minha aplicação terá de instalar o mesmo ?

Obrigado.

para quem não sabe e futuras dúvidas é este o pacote:

http://www.microsoft.com/en-us/download/details.aspx?id=23714

Edited by sYnced
Posted

Bom dia,

Podes e deves colocar isso no manifest da tua aplicação como "pre-requisit", para a quando da instalação ser pedido ao utilizador que instale o pacote, caso este não esteja ainda instalado.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Bom dia,

No Visual Studio, com o teu projecto aberto tens na barra do lado direito no solution explorer uma serie de opções. nessas opções tens uma chamada "properties", clicas com o botão direito nessa opção e abre um form com várias tabs e opções. Lá tens em resources os ficheiros todos que fazem parte da tua aplicação e no assembly podes definir o que são "pre-requisites", "included", etc... Neste caso usas "pre-requisites" para que indique ao utilizador que deve instalar o XNA.

Isto basicamente vai alterar o manifest.xml, mas penso que seja mais fácil fazeres as coisas pela interface gráfica.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Boa tarde,

Ao abrir, se não encontrar o XNA, pede ao utilizador para fazer download, do XNA.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Boa noite,

Mostra o resto do código. Não sei conde colocas-te o código exemplo que deixei acima. Aquele código deveria estar num bloco. Só com esse screenshot sem ver onde está inserido o código, não consigo solucionar, sei que existe uma falha, que provavelmente está na estrutura onde o código foi colocado, mas mais do que isso, só "Ligando à Maya"! 😉

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted
public void takess()
{
//bool aero = false;
//Prints.ManageAero(aero);
//aero = true;
Random name = new Random();
int num = name.Next(10);
int nom = name.Next(100);
int nem = name.Next(1000);
string[] abc = new string[] { "a", "A", "b", "B", "c", "C" };
string[] abcd = new string[] { "a", "A", "b", "B", "c", "C" };
string[] abcdf = new string[] { "a", "A", "b", "B", "c", "C" };
string[] abcdfg = new string[] { "a", "A", "b", "B", "c", "C" };
string nume = abc[name.Next(abc.Length)] + abcd[name.Next(abcd.Length)] + abcdf[name.Next(abcdf.Length)] + abcdfg[name.Next(abcdfg.Length)];
string nomeprint = txtUsername.Text + "_" + nume + num.ToString() + nom.ToString() + nem.ToString();
CaptureScreen(nomeprint, ImageFormat.Jpeg);
/* int screenWidth = Screen.GetBounds(new Point(0, 0)).Width;
int screenHeight = Screen.GetBounds(new Point(0, 0)).Height;
Bitmap bmpScreenShot = new Bitmap(screenWidth, screenHeight);
Graphics gfx = Graphics.FromImage((Image)bmpScreenShot);
gfx.CopyFromScreen(0, 0, 0, 0, new Size(screenWidth, screenHeight));
string nomeprint = txtUsername.Text + "_" + nume + num.ToString() + nom.ToString() + nem.ToString();
bmpScreenShot.Save(nomeprint + ".jpg", ImageFormat.Jpeg);
Prints.ManageAero(aero);
*/

//string nomeprint = txtUsername.Text + "_" + nume + num.ToString() + nom.ToString() + nem.ToString();
//int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
//int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
////força o desenho de uma frame no buffer
//Draw(new GameTime());
////obtem a imagem que foi colocada no buffer
//int[] backBuffer = new int[w * h];
//GraphicsDevice.GetBackBufferData(backBuffer);

////copia-a para uma textura 2D
//Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
//texture.SetData(backBuffer);

////grava no disco com o StreamWriter
//Stream stream = File.OpenWrite(counter + ".jpg");
//texture.SaveAsJpeg(stream, w, h);
////faz o dispose dos objectos
//stream.Dispose();
//texture.Dispose();
//UploadPrint(nomeprint);

vê os o que está comentado com // até abaixo, pois eu mudei para fazer testes mas ainda não consegui! Obrigado (ps o forum apagou o meu antigo post :O)

Posted

Bom dia,

Estás a usar XNA ? A aplicação é consola ou WindowsForms ? Pelo código não consegui perceber. Se estiveres a usar XNA a solução é uma, se estiveres a usar Consola (modo de texto), é outra, e se estivers a usar WindowsForms, outra.

Eu assumi inicialmente que estivesses a usar XNA, pois uma parte considerável dos game developers usa XNA.

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Boa noite,

Desculpa, mas não entendi bem a resposta, pelo que peço que clarifiques o seguinte: O jogo em causa, está feito em WindowsForms, e o que pretendes é tirar prints do mesmo sempre que for pedido ? Ou estás a desenvolver uma aplicação que tire prints de um jogo feito utilizando uma outra ferramenta ?

Cordiais cumprimentos,

Apocsantos

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Posted

Estou a desenvolver uma aplicação para tirar prints a jogos, infelizmente eles saiem pretos, descobri uma nova maneira recentemente mas só me tira ao ambiente de trabalho mesmo estando no jogo!

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.