الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود او فانكشن لحفظ الصوره

بدأه ورد الخزآمى في 19 ديسمبر 2010 · 4 رد · 1,029 مشاهدة · في OpenGL
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

انا اشتغل على الفيجول ستديو c++

وسويت واجهه رسوميه وكل شي

اللي ناقصني ابغا فانكشن او كود عشان احفظ الصوره بأي صيغه

المهم احفظ الصوره

سألت قالو فيه فانكشن في الفكتور ومالقيت مرررره

الله يسعدكم ويوفقكم يارب

انا محتاجته هالاسبوع لو بس توضيح للفكره وانا ابحث وكل شي

#2

هذا مثل عن عمليه الحفظ بصيغه bmp وهي مدعومه اصلاً بال windows sdk ولكن اذا اردت الحفظ بصيغ اخرى عليك بتحميل مكتبات مثل jpeg.h

include"windows.h"

#include<iostream>

#include"Gl/gl.h"

#include"Gl/glu.h"

#include"Gl/glaux.h"

#pragma comment (lib,"OpenGL32.lib")

#pragma comment (lib,"glu32.lib")

#pragma comment (lib,"glaux")

int Xmax=600;

int Ymax=600;

bool IsSaved=false;

void SaveWindowAsImage(int,int);

void CALLBACK display()

{ 

	glClearColor(255,255,255,255);

	glClear(GL_COLOR_BUFFER_BIT);

	glBegin(GL_TRIANGLE_FAN);

	glColor3i(0,255,0);

	glVertex2f(10,50);

	glVertex2f(60,50);

	glVertex2f(60,10);

	glVertex2i(80,5);

	glVertex2i(40,0);

	glEnd();

	glFlush();

	if(!IsSaved)

	{

		SaveWindowAsImage(Xmax,Ymax);

		IsSaved=true;

	}

}

void SaveWindowAsImage(int Xmax,int Ymax)

{

	char* bmpBuffer=new char[Xmax*Ymax*3];

	glReadPixels((GLint)0, (GLint)0,(GLint)Xmax-1, (GLint)Ymax-1,GL_RGB,

		GL_UNSIGNED_BYTE, bmpBuffer);

	FILE *filePtr = fopen("c:\\aaaa.bmp", "wb");

	BITMAPFILEHEADER bitmapFileHeader;

	BITMAPINFOHEADER bitmapInfoHeader;

	memset(&bitmapFileHeader,0,sizeof(BITMAPFILEHEADER));

	memset(&bitmapInfoHeader,0,sizeof(BITMAPINFOHEADER));

	bitmapFileHeader.bfType = 0x4D42; //"BM"

	bitmapFileHeader.bfSize = Xmax*Ymax*3;

	bitmapFileHeader.bfOffBits =

		sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER);

	bitmapInfoHeader.biSize = sizeof(BITMAPINFOHEADER);

	bitmapInfoHeader.biWidth = Xmax-1;

	bitmapInfoHeader.biHeight = Ymax-1;

	bitmapInfoHeader.biPlanes = 1;

	bitmapInfoHeader.biBitCount = 24;

	bitmapInfoHeader.biCompression = BI_RGB;

	fwrite(&bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, filePtr);

	fwrite(&bitmapInfoHeader, sizeof(BITMAPINFOHEADER), 1, filePtr);

	fwrite(bmpBuffer, Xmax*Ymax*3, 1, filePtr);

	fclose(filePtr);

	delete bmpBuffer ;

}



void setsquar(float x,float y,float width){

	glBegin(GL_QUADS);

	glColor3f(255,0,0);

	glVertex2f(x,y);

	glColor3f(0,255,0);

	glVertex2f(x+width,y);

	glColor3f(0,0,255);

	glVertex2f(x+width,y+width);

	glColor3f(255,0,255);

	glVertex2f(x,y+width);

	glEnd();}

void main(){

auxInitDisplayMode(AUX_RGB);

auxInitPosition(0,0,Xmax,Ymax);

auxInitWindow(L"Example");

auxMainLoop(display);

}
#3

جزااااااااااااااااااااااك الله خييييير مرة فادني هذا الكود..

#4

you are welcome

#5

رائع جدا واذا اردت بصيغ اخرى بدل bmp

اي امتتداد زي مثلا GIF

وهكذا

هل يوجد فانكشن تقوم بذلك ..

اي صيغ اخرى لا اشترط GIF

مواضيع مشابهة