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

برنامج توليد الخطوط بلاحقة BMP

مغلق
بدأه yamenslayer في 14 فبراير 2007 · 7 رد · 1,863 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

بس انا حبيت شارك شباب المنتدى ببرنامج لتوليد الخطوط بلاحقة BMP

البرنامج اساسا كان من المحرك IrrLichit

بس انا عدلت على الكود حتى يقوم بتخرج الاحرف بشكل منظم من اجل مشروع انا قائم عليه يدعى ب M-RAY Engine

وحبيت هلق شارك الشباب فيه

الكود مرفق

Font_Builder.rar

#2

وعليكم السلام ورحمة الله ..

قمت بتحميل الكود وسأترجمه ... اكثر شيء عجبني هو استخدامك لمثل هذا المحرك ..

وكنت اتمنى اضافة ايضا المل التطبيقي وملفات الdll فالحجم لن يكبر كثيرا وسيتمكن كل الاعضاء من تجربته ( خاصة لم لا يملك المحرك ) .

سأنظر للكود .. واي استفسارات ستراها :-)

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#3

انا فهمت غلط :) .. يبدو انك لم تعتمد على المحرك .. كل شيء باستخدام WIN API .. اعذرني على سوء الفهم

(والاستعجال ) ..

الكود جدا واضح ومرتب .. لكن واضح انه لا يدعم اليونيكود ..

عموما شكرا على الكود .. وسأستفيد منه في تطوير برنامجي أيضا :) .. سأستفيد كثيرا من ترتيب كود برنامجك .

شكرا لك .

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#4

مشكور اخي الشمري على المشاركة

على كل حال انا عدلت مبارح على البرنامج و اضفت عليه امكانية عمل Rescale للفونتات بابعاد يقبلها ال Opengl

256-512-1024-2048

بس انا اتبعت اسلوب على السريع بعمل التحجيم

وهو اخذ النسبة بين العرض الجديد الجديد على العرض القديم ثم ضربها برقم السطر والعمود للمصفوفة الجديدة ..

المهم صعب شرحها شوي .. يمكن الاطلاع على الطريقة بالكود

اذا حدا عندو فكرة افضل فليشارك بها وله جزيل الشكر

Font_Builder_updated.rar

تم تعديل هذه المشاركة بواسطة yamenslayer في 15 فبراير 2007 في 10:45

#5

السلام عليكم .

عندي ملاحظتين على آخر نسخة من برنامجك ..

أنت قمت بعمل قلب للصورة .. من خلال هذا الكود :

for(int j=0;j<surfaceHeight/2;j++)
	{

		for(int i=0;i<surfaceWidth;i++)
		{
			tmp=buffer[surfaceWidth*top+i];
			buffer[surfaceWidth*top+i]=buffer[surfaceWidth*bottom+i];
			buffer[surfaceWidth*bottom+i]=tmp;
		}
		bottom--;
		top++;
	}

وذلك حتى تظهر بشكل صحيح ..

ولكن أنت لا تحتاج كل هالكود .. فقط يكفيك عكس الصورة من خلال الضرب في سالب واحد للارتفاع .. هكذا .

header.Height=-outSurfaceDim;

لاحظ الضرب في سالب واحد .. عشان تنقلب الصورة ..

طبعا كلا الطريقتين تؤدي نفس المطلوب .. ولكن الثانية اسهل .

الملاحظة الثانية .. وهي المشكلة التي تساءلت عنها في اخر ردودك ..

مسألة تحجيم الصورة ..

فعلا .. لاحظت أنك اذا اخترت مثلا حجم الخط صغير .. ومن ثم كبرت الصورة .. رح يحصل تشوه ..

ولكن هذه لا اتوقع مشكلة .. فالملامة ستقع على المستخدم .. لماذا يختار حجم الخط 8 مثلا .. والصورة 1024 * 1024 .

عموما الحل من وجهة نظري المتواضعة .. كما ذكرت في ردي السابق ..

وهو ان يكون حجم الخط بناء على حجم الصورة ..

يعني أولا تكتشف حجم الصورة .. ثم تقوم بالتعديل على حجم الخط ليناسب حجم الصورة .

ولاتترك للمستخدم حرية اختيار حجم الخط .

هذا ما اعرفه .. ( ممكن يفيدك احد الاخوان حول هذه النقطة ) .

أيضا اقترح ان تستخدم مكتبة صور .. مثل DevIL.. فستوفر عليك الوقت والجهد .. وتدعم عدة انساق .. ( وتحول الصورة من Bmp الى اي نسق تريده .)

وتقدر تعمل .. ( تحجيم) للصورة ..

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#6

اخي الشمري

بالنسبة لموضوع قلب الصورة انا مضطر استخدام هذه الطريقة كي يستطيع المحرك استيراد البيانات بشكل صحيح

ربما عارض الصور في Windows يستطيع فهم هذه الناحية بضرب الارتفاع ب -1

لكن انا مضطر عمل ذلك هنا بدلا من عمل ذلك في المحرك

اما بالنسبة لمسألة تحجيم الصورة فقد قمت باضافة مربع اختيار حتى يتيح للمستخدم حرية تحجيم الصورة او تركها بحجمها الاساسي فيقوم بتعديلها عن طريق برنامج مثل Photosohp بما انه ادق بعملية التحجيم

وعند اخيار التحجيم فان البرنامج يقوم تلقائيا باختيار اعلى حجم خط

واضفت ايضا توليد الاحرف العربية ايضا ( مشكور اخي الشمري , قمت بالاستفادة من برنامجك من هذه الناحية) ولكن قد حدث بعض المشاكل ببعض الخطوط

واخيرا وليس اخرا قمت بعمل توليد Alpha Layer للخطوط

ارجو ان ينال البرنامج اعجاب الجميع

http://www.zshare.net/download/font_builder_ar-rar.html

#7

ما شاء الله .. تطويرات جدا جميلة .. :) :

وملاحظاتي المتواضعة والتي لا تقلل ابدا من مستوى برنامجك..

1- طبيعي ان لا تظهر الخطوط العربية كما تريدها أنت .. يجب أن تحدد نوع الترميز الذي تريده عند انشاء الخط .. ففي كل خط يوجد عدة تراميز ..

ANSI_CHARSET

BALTIC_CHARSET

CHINESEBIG5_CHARSET

DEFAULT_CHARSET

EASTEUROPE_CHARSET

GB2312_CHARSET

GREEK_CHARSET

HANGUL_CHARSET

MAC_CHARSET

OEM_CHARSET

RUSSIAN_CHARSET

SHIFTJIS_CHARSET

SYMBOL_CHARSET

TURKISH_CHARSET

VIETNAMESE_CHARSET

JOHAB_CHARSET

ARABIC_CHARSET

HEBREW_CHARSET

THAI_CHARSET

بالتالي يجب عليك تعديل الدالة CreateFont الموجودة في الدالة copyFontToClipBoard إلى هذا الشكل ..

	HFONT font = CreateFont(
			-MulDiv(fontSize, GetDeviceCaps(dc, LOGPIXELSY), 72),
			0,0,0,
			bold ? FW_BOLD : 0,
			italic,
			0,0,ARABIC_CHARSET,0,0,0,0,
			str);

بعده سوف يتم طباعة الحروف العربية بشكل سليم في الصورة ..

وممكن أنك تضيف list اخرى يتم فيها اختيار نوع الترميز كما هو موجود في هذه الصورة .

post-42837-1172060475_thumb.jpg

ضع الخيارات .. وكل خيار يقابله القيمة .. مثلا العربية تقابلها ARABIC_CHARSET

2- التعليق الثاني هو بمسألة معاينة الخط .. اجعله يدعم اليونيكود والترميز العربي .. بتغييرات بسيطة .. في الدالة updateFontPreview

void updateFontPreview(HWND hWnd)
{
...
...
...
	if (sel != LB_ERR && sizeSel != LB_ERR)
	{
		..
		..
		..

		HFONT font = CreateFont(
			-MulDiv(fontSize, GetDeviceCaps(dc, LOGPIXELSY),72),
			0,0,0,
			bold ? FW_BOLD : 0,
			italic,
			0,0,ARABIC_CHARSET,0,0,0,0,
			str);

		...
		...

		const wchar_t *text = L"ABCDEF abcdef 12345 ابجد هوز";

		..
		..
		DrawTextW(dc, text, wcslen (text), &r, DT_VCENTER | DT_CENTER | DT_SINGLELINE);

		..
	}
}

تم تعديل هذه المشاركة بواسطة الشمري في 21 فبراير 2007 في 15:24

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

#8

مشكور جدا اخي الشمري

فعلا شي جميل جدا .. فقد قامت هذه المشاركة بتحسين البرنامج

بس انا كنت حابب اعتذر عن تاخر ردي لانشغالي بمحاضرات <_< ي وكان بالانترنت مشكلة

اعود واقول مشكور جدا

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…