• 0
الطالب39

فكرة مشروع الكتابة باللغة العربية

سؤال

السلام عليكم

تدور في ذهني فكره لا أدري إن كان سهل تطبيقها وهي الكتابه والطباعه باللغه العربيه :huh:

حسنا قد تقول لي كيف يمكننا ذلك على حسب فهمي فالأمر ليس بالمعقد ولكن لا أدري كيف يتم عمله وهو

كما هو معروف بأن الكثير من الأجهزه لا تدعم اللغه العربيه دعنا نقول أجهزه الإستقبال معظمها لكن لا يدعم العربيه ولكن في ما بعد أصبحت تدعم اللغه العربيه وذلك بزياده الحروف في الأسكي الخاص بها وتجدها معرفه في الجهاز هكذا على هذا الشكل وهو حرف الباء على سبيل المثال

0000000000000000
0000000000000000
1100000000000011
1111111111111111
0000000000000000
0000000110000000
0000000000000000

 

ولا أدري كيف يتم بعد ذلك بقيه العمل لطباعه الحروف بالعربيه :(  هل من الممكن عمل ذلك

تم تعديل بواسطه الطالب39
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

59 إجابة على هذا السؤال .

  • 0

!!! رائع  أخ أحمد .. ماهذه الروعة :)

لنبداً بشيء يثير الحماسة بعض الشيء

شجعتموني لكتابة برنامج صغير مبدئي .وبدائي جداً

البرنامج بلغة C وهو فقط لإظهار كيف ستظهر الحروف ذات الأبعاد 8*8

 يمكنك تجريب الأحرف

ا,ب,ج,د,ر,س,ص,ط

قثط

#include<windows.h>#include<conio.h>HDC DC;int pointer=0;Print(int a){    printf("printing %c\n",a);    int i,j;    int Alphabet[8][8][8]=    {    {//ا        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0},        {0,0,1,1,1,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0}},    {//ب        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {1,0,0,0,0,0,0,1},        {1,0,0,0,0,0,0,1},        {1,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0}},    {//ج        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,1,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,1,0,0},        {0,1,0,0,1,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//د        {0,0,0,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,0,1,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0},},    {//ر        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,1,1,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,1,1,1,0,0},        {0,1,1,0,0,0,0,0},},    {//س        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,0,1,0,1},        {1,0,0,1,0,1,0,1},        {1,0,0,1,1,1,1,1},        {1,0,0,1,0,0,0,0},        {1,0,0,1,0,0,0,0},        {0,1,1,0,0,0,0,0}},    {//ص        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,0,1,0,0,1},        {1,0,1,0,1,0,0,1},        {1,0,1,1,1,1,1,1},        {1,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0}},    {//ط        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,1,0,0,1,1},        {0,0,0,1,0,0,0,1},        {0,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0}}        };        char letters[256];        letters['h']=0;        letters['f']=1;        letters['[']=2;        letters[']']=3;        letters['v']=4;        letters['s']=5;        letters['w']=6;        letters['\'']=7;    for(i=0;i<8;i++)        for(j=0;j<8;j++)            SetPixel(                     DC,200+i-8*pointer,200+j,0xFFFFFF*Alphabet[letters[a]%8][j][i]                     );    pointer++;}int main(){    DC = GetDC(GetDesktopWindow());    int a;    while((a=getch())!='\n')    {        Print(a);    }    return 0;} 
 يمكنك تجريب البرنامج المرفق , اسحب النافذة لأقصى اليسار في الأعلى حتى تترك مساحة للكتابة فيها .. جربه على أي حال

المهم ..

الكود الذي سأقوم بكتابته الآن هو لقراءة ملفات bmp التي تصممونها وسيقوم بتخزينها وعرضها بعد ذلك ..

قررت أن ننتهي من كل الكود بلغة C قبل أن نحوله للأسمبلي , علماً أن مرحلة كتابة الكود بالـ C هي التي أعتبرها التصميم , وسيكون التنفيذ على الأسمبلي سهلاً بعد ذلك

بالتوفيق للجميع , والسلام عليكم

Arabic__36a2__0.rar

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اخ مصطفى هل بامكانك ان تشرح الكود قيلا؟؟

وايضا هل نصمم الاحرف بابعاد 8*8 ام 12*16؟؟

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

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الكود بدائي وضعته فقط من باب المشاركة وجاري العمل على الباقي الآن ..

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

يمكنكم التصميم بأي أبعاد تريدونها ( فالكود الذي أكتبه الآن يشمل ذلك )

كشرح سريع للكود :

DC تعني مقبض الأدوات في winAPI ونستخدمه للرسم وأمور أخرى وخصوصاً في الكود للدالة SetPixel التي تغير لون بكسل واحد في النافذة المعطى الـ DC لها

الـ main واضحة حيث نأخذ حرف ونستدعي دالة الطباعة

في دالة الطباعة قمت بتعريف المصفوفة Alphabet وهي من 3 أبعاد البعد الأول للحروف والبعدان الثاني والثالث لشكل الحرف ..

في هذا الجزء

letters['h']=0;        letters['f']=1;        letters['[']=2;        letters[']']=3;        letters['v']=4;        letters['s']=5;        letters['w']=6;        letters['\'']=7; 

أقوم بإسناد الرقم مميز لكل  حرف h تعني حرف الألف فهما مرتبطان في لوحة المفاتيح ,

هذا الرقم هو الـ index الخاص بالحرف في المصفوفة Alphabet

 

ثم حلقةتان متداخلتان لطباعة الحرف بكسلاً فبكسل :)

قم نزيد مؤشر الطباعة

(الشيء المعقد الوحيد هو تحديد مكان الحرف حسب موضع المؤشر )

قمت بتحديث الكود قليلاً بحيث يسمح بالرجوع للخلف عن طريق الـbackspace

والخروج عند الضغط على Enter

وأضفت بعض الحروف الأخرى

#include<windows.h>#include<conio.h>HDC DC;int pointer=0;Print(int a){    printf("printing %c\n",a);    int i,j;    int Alphabet[12][8][8]=    {    {//ا        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0},        {0,0,1,1,1,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,1,0,0,0}},    {//ب        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {1,0,0,0,0,0,0,1},        {1,0,0,0,0,0,0,1},        {1,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,1,0,0,0,0}},    {//ج        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,1,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,1,0,0},        {0,1,0,0,1,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//د        {0,0,0,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,0,1,1,0,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,0,1,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0},},    {//ر        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,1,1,0},        {0,0,0,0,0,1,0,0},        {0,0,0,0,1,1,0,0},        {0,0,0,1,1,1,0,0},        {0,1,1,0,0,0,0,0},},    {//س        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0},        {0,0,0,1,0,1,0,1},        {1,0,0,1,0,1,0,1},        {1,0,0,1,1,1,1,1},        {1,0,0,1,0,0,0,0},        {1,0,0,1,0,0,0,0},        {0,1,1,0,0,0,0,0}},    {//ص        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,0,1,0,0,1},        {1,0,1,0,1,0,0,1},        {1,0,1,1,1,1,1,1},        {1,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {0,0,0,0,0,0,0,0}},    {//ط        {0,0,0,0,0,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,0,0,0},        {0,0,0,0,1,1,1,0},        {0,0,0,1,0,0,1,1},        {0,0,0,1,0,0,0,1},        {0,1,1,1,1,1,1,1},        {0,0,0,0,0,0,0,0}},    {//ع        {0,0,0,1,1,1,0,0},        {0,0,1,0,0,0,0,0},        {0,1,0,0,0,1,0,0},        {0,0,1,1,1,0,0,0},        {0,0,1,0,0,0,0,0},        {0,1,0,0,0,0,0,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0}},    {//ف        {0,0,0,0,0,0,1,0},        {0,0,0,0,0,0,0,0},        {0,0,0,0,0,1,1,0},        {1,0,0,0,1,0,0,1},        {1,0,0,0,0,1,1,0},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0}},    {//ك        {0,0,0,0,0,0,0,1},        {0,0,0,1,1,0,0,1},        {0,0,1,0,0,0,0,1},        {0,0,0,1,1,0,0,1},        {1,0,1,1,1,0,0,1},        {1,0,0,0,0,0,1,0},        {0,1,1,1,1,1,0,0},        {0,0,0,0,0,0,0,0}},    {//م        {0,0,0,0,0,1,1,1},        {0,0,0,0,0,1,1,1},        {0,0,0,1,1,1,1,1},        {0,0,0,1,0,0,0,0},        {0,0,1,1,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,1,0,0,0,0,0},        {0,0,1,0,0,0,0,0}}        };        char letters[256];        letters['h']=0;        letters['f']=1;        letters['[']=2;        letters[']']=3;        letters['v']=4;        letters['s']=5;        letters['w']=6;        letters['\'']=7;        letters['u']=8;        letters['t']=9;        letters[';']=10;        letters['l']=11;    for(i=0;i<8;i++)        for(j=0;j<8;j++)            SetPixel(                     DC,200+i-8*pointer,200+j,0xFFFFFF*Alphabet[letters[a]%12][j][i]                     );    pointer++;}int main(){    DC = GetDC(GetDesktopWindow());    int a;   while((a=getch())!=13&&a!=10)  {        if(a=='\b')            pointer--;        else            Print(a);    }    return 0;} 

أهم شيء أن تعرف أن الكود ليس جزءاً من المشروع بعد , فهو فقط للتجريب , أجرب الأفكار

بالتوفيق

تم تعديل بواسطه مصطفى 36a2
تعديل الكود
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فاضل اكم سؤال ؟؟

 

في المصفوفة Alphabet ,

في البعدان الثاني والثالث ، على ماذا اعتمدت في تعيين البتات 0 و 1؟؟

هل سيكون هنالك كود c لتحميل ملفات bmp دالخ الكونسول؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ملاحظة : عندما اضغط على backspace يخرج من البرنامج

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً , تم تعديل الكود في الرد

____

قمت بتعيين البتات يدوياً ويمكنك رؤية ذلك .. مجرد رأي في شكل الحرف لا أكثر .. (يدوياً )

سيكون هناك كود c بقراءة ملفات bmp وحيدة اللون وتحويلها إلى مصفوفات مقل المصفوفة Alphabet

 إن شاء الله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً , تم تعديل الكود في الرد

____

قمت بتعيين البتات يدوياً ويمكنك رؤية ذلك .. مجرد رأي في شكل الحرف لا أكثر .. (يدوياً )

سيكون هناك كود c بقراءة ملفات bmp وحيدة اللون وتحويلها إلى مصفوفات مقل المصفوفة Alphabet

 إن شاء الله

 

لدي تعديل بسيط في رسم الاحرف بناء على المصفوفة Alphabet في الكود، بحيث يجعل الاحرف بابعاد 8*8 (كما اردت انت في البداية  ^_^ )

ستراه بعد ان تم العمل عليه (تقريبا بعد ساعتين).

ملاحظة : بالنسبة لحرف الميم اخر 4 بكسلات زيحهم بمقدار بكسلين لليمين 

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ملاحظة : بالنسبة لحرف الميم اخر 4 بكسلات زيحهم بمقدار بكسلين لليمين 

D:

أخبرتك أن الكود ليس جزءاً من المشروع :)

الكود التالي يقوم بقراءة صورة bmp وحيدة اللون ويطبع الصورة على الكونسول .

(عذراً للـ ambiguity  هوايتي )

#include<stdio.h>int main(){    int start,hight,width;    int i,j,q,l;    FILE*bmp=fopen("C:\\Users\\Mostafa36a2\\Downloads\\OnePixel.bmp","r");    fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);    fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);    fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);    //printf("%d  %d  %d\n",start,width,hight);    fseek(bmp,start,SEEK_SET);    char **Letter=(char*)malloc(hight);    for(i=0;i<hight;i++,fread((void *)&l,1,(4-(width/8)%4)%4,bmp))        for(Letter[hight-1-i]=(char*)malloc(width),j=0;j<width;j++)            for(/*printf("%i\n",*/q=fgetc(bmp)/*);*/,l=0;l<8;l++,q/=2)                Letter[hight-1-i][width-1-j++]=q%2?' ':219;    fclose(bmp);    for(i=0;i<hight;i++,putchar(10))        for(j=0;j<width;j++)            putchar(Letter[i][j]);}
تم تعديل بواسطه مصطفى 36a2
;
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكلك راح توديني في ستين داهية  :o

لكن الكود لم يعمل لدي يوجد فيه عدة اخطاء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

لم أكن أعلم بأن المشروع سيكون معقد بهذا الشكل ولكن أصبح ممتع ومسلي في نفس الوقت نرجو من الجميع المشاركه

 

لقد حاولت رسم الحروف مراعيا بذلك حاله إتصال الحرف مع حرف آخر حيث سيكون مبدئيا تمثيل الحرف بأبعاد 14*8 سأحاول رسم الحروف المتصله من كلا الجهتين اليسار و اليمين

أما الحروف التي لاتتصل بما بعدها (التي تتصل على اليمين فقط) وهي * أ د ذ ر ز و * فهي موجوده في الصوره تم رسمها

 

post-273058-0-30230300-1389643338_thumb.

 

ما هو الكومبيلر الذي تستخدمه أخي مصطفى أعني في لغه السي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

أنا مثلا لا أتقن السي و لا أعرف معني تلك الأوامر التي استعملتها.

 

هل يمكن كتابة نفس برامج قراءة البكسلات من ملف bmp  بلغة الأسمبلي.

 

و هل يمكننا كتابته في بأي لغة أخري مثلا لكن من دون استعمال الدوال الجاهزة

 

أقصد ما دمنا نتعلم الأسمبلي فمن الضروري أن نتعود علي الإستغناء عن الدوال الجاهزة لأن المغزي من تعلم هذه اللغة المعقدية و المدنية المستوي(الأسمبلي)

 

فمبرمج الأسمبلي المحترف لا يستعمل المقاطعات غالبا و إنما يتعامل مباشرة مع العتاد(و إلا فلماذا لا نستعمل اللغات العالية المستوى)

 

هو التعامل المباشر مع العتاد بها نستطيع تصميم واجهات و الطباعة علي الشاشة و تصميم لغات برمجة و إلي غير ذلك.

 

 

أنا لا أستعمل الدوال أبدا.

-1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يا جماعة العشاء جاهز .. :)

البرنامج جاهز لقراءة الصور جميعاً ...

#include<stdio.h>int main(){    int start,hight,width;    int i,j,q,l;    int A;    char twoPowers[]={128,64,32,16,8,4,2,1};    char Alphabet[]="hfje[po]`v.sawq'_uytr;glki,d";    char path[100];    FILE*bmp;    for(A=0;Alphabet[A];A++)    {        sprintf(path,"%c.bmp",Alphabet[A]);        bmp=fopen(path,"r");            fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);            fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);            fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);            fseek(bmp,start,SEEK_SET);            char **Letter=(char**)malloc(hight*sizeof(char*));            for(i=hight-1;i>=0;i--,fread((void *)&l,1,3-(width%32-1)/8,bmp))            {                for(Letter[i]=(char*)malloc(width),j=0;j<width;)                {                    for(q=fgetc(bmp),l=0;l<8&&j<width;l++,j++)                        Letter[i][j]=q&twoPowers[l]?' ':219;                }            }            fclose(bmp);            for(i=0;i<hight;i++,putchar(10))                for(j=0;j<width;j++)                    putchar(Letter[i][j]);    }} 

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

يمكنكم التعديل في ملفات الـ bmp  وسيتكفل البرنامج في طباعة الحرف

 

alphabet.rar

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@eng.ahmadshalabi


شكلك راح توديني في ستين داهية  :o

لكن الكود لم يعمل لدي يوجد فيه عدة اخطاء

عادي :) النسخة الجديدة ليس فيها أخطاء

 

@الطالب39

أهلاً وسهلاً بك ..أطلت الغياب ..  ممتاز ما قمت به ..

بانتظار التصميم الكامل .. ولكن هناك بعض التعديلات سأكتبها اليوم بإذن الله

@kenham


هل يمكن كتابة نفس برامج قراءة البكسلات من ملف bmp  بلغة الأسمبلي.

 طالما أننا لن نستعمل أي نظام تشغيل فالجواب : لا . لا يمكن التعامل مع الملفات من الBIOS (يمكننا في DOS وأنظمة التشغيل الأخرى )

ولكن لن نستخدم الملفات بل سيكون الكود الأسمبلي محتوياً على الخطوط المرفقة كلها


و هل يمكننا كتابته في بأي لغة أخري مثلا لكن من دون استعمال الدوال الجاهزة

لم أستحدم أي دالة جاهزة مجرد قراءة ملف وطباعة الخرج , ويمكن القيام بذلك بأي لغة أخرى

 


فمبرمج الأسمبلي المحترف لا يستعمل المقاطعات غالبا , و إنما يتعامل مباشرة مع العتاد

لست محترفاً لأجيبك بنعم أو لا , ولكن الطباعة على الشاشة غاية في السهولة وبدون استخدام المقاطعات :)

 

المشروع سيفشل 100% إن بدأنا بكتابته بالأسمبلي فوراً , بدون تخطيط وبدون تجربة الأفكار

بعد انتهاء جميع الأفكار وتطبيقها بلغة عالية المستوى , سيكون دليلاً على فهم المشروع بشكل كامل , عندها يمكن إنهاء كود الأسمبلي في ساعات ..

الأسمبلي لغة بسيطة ولكن تخطيط الكود وتنظيمه هو الصعب فيها .. وطالما أننا فهمنا الكفرة جيداً فلن نواجه صعوبات

 

أعتذر للتشويش في الأكواد .. سأشرح كل شيء عند انتهاء التخطيط بحيث لا نخطئ في شيء ..

أحببت أن يكون العمل أمامكم حتى لا تظنوا أن المشروع توقف ...

الأكواد حتى الآن لم تتجاوز مرحلة قراءة الخطوط

 

والكود القادم سيكون الكتابة بالعربي المقطع . بكسل بسكل .إن شاء الله

 

والله ولي التوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

#include<stdio.h>char Alphabet[]="hfje[po]`v.sawq'_uytr;glki,d";char **Letter[sizeof(Alphabet)];int H,W;int GetLetters(const char*Path){    int start,hight,width;    int i,j,q,l;    int A;    char twoPowers[]={128,64,32,16,8,4,2,1};    char path[100];    FILE*bmp;    for(A=0;Alphabet[A];A++)    {        sprintf(path,"%s%c.bmp",Path,Alphabet[A]);        bmp=fopen(path,"r");        if(!bmp)            return -1;        fseek(bmp,10,SEEK_SET);fread((void *)&start, sizeof(int), 1, bmp);        fseek(bmp,18,SEEK_SET);fread((void *)&width, sizeof(int), 1, bmp);        fseek(bmp,22,SEEK_SET);fread((void *)&hight, sizeof(int), 1, bmp);        H=hight,W=width;        fseek(bmp,start,SEEK_SET);        Letter[A]=(char**)malloc(hight*sizeof(char*));        for(i=hight-1;i>=0;i--,fread((void *)&l,1,3-(width%32-1)/8,bmp))        {            for(Letter[A][i]=(char*)malloc(width),j=0;j<width;)            {                for(q=fgetc(bmp),l=0;l<8&&j<width;l++,j++)                    Letter[A][i][j]=q&twoPowers[l]?0:1;            }        }        fclose(bmp);        printLetter(A,hight,width);    }    return 0;}void printLetter(int A,int hight,int width){    int i,j;    for(i=0;i<hight;i++,putchar(10))            for(j=0;j<width;j++)                putchar(Letter[A][i][j]);}#include<windows.h>HDC DC;int pointer;void PixelLetter(int A,int hight,int width){    int i,j;    for(i=0;i<hight;i++)        for(j=0;j<width;j++)            SetPixel(DC,1000+i-pointer*width,100+j,Letter[A][j][i]*0xFFFFFF);    pointer++;}#include<conio.h>int main(){    int a,q;    DC=GetDC(GetDesktopWindow());    GetLetters("");    while((a=getch())!=10&&a!=13)    {        if(a=='/')            a='_';        for(q=0;q<sizeof(Alphabet);q++)            if(a==Alphabet[q])                printLetter(q,H,W),PixelLetter(q,H,W);    }} 

في المرفقات البرنامج المبدئي وبجانبه الصور ..

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

 

 

هل هناك شيء باق قبل أن نتابع ؟

alphabet2.rar

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

جميل جميل

التقدم واضح،

ولكن يوجد بعض الامور ، الا وهي :-

1- عند التعديل على الصور (اقصد بالتعديل هنا تعديل الصورة مع المحافظة على اسمها المقابل لها)، فعند الضغط على الحرف من الكيبورد يعلق يطلع الى الديبغر الخاص بالفيجوال الستديو (يعني في خطأ ما لا ادري اين)

2- عند الضغط على حرف ى لا يظهر مع العلم ان الحرف موجودة رستمه بين الملفات

3- عند الضغط على backspace لا يحدث شيء

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

2- لم أدرجه في الحروف 

3- لم أكتب شيئاً بخصوصه

1- هل يمكنك توثيق الحالة ؟ ربما تقوم بحفظ الملف بصيغة 24 بت .. والمطلوب صيغة وحيدة اللون

هل يمكنك إرفاق الملف المعدل إن لم يكن السطر السابق صحيحاً ؟

بالمناسبة .. لا أدري لماذا اقترحت صيغة لون واحد , مع العلم أن كود التعامل مع صيغة 24 بت أسهل p:

بالتوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

احسنتم صنعا جميعا و و فقكم الله و زادكم علما و تفوقا

اخي الكريم مصطفى لقد جربت جميع الحروف و كلها ظهرت ماعدا الالف المقصورة "ى" و قد انتقلت بين جميع اللغات فرنسية و عربية و انجليزية لكنها لم تظهر و لا ادري لماذا؟

لكن عملكم هذا يستحق حقا الثناء تابعوا و انا ساحاول ان اتعلم منكم باذن الله 

موفقون جميعا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اعذرني لعدم توثيق الحالة التي طلبتها، لدي مشكلة في رفع الصور على المنتدى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لقد أتممت جميع الحروف تقريبا ممكن بقي حرف أو إثنين كـ ئ المهم مقاس الحروف وهو 15*9  ما يهمنا هنا 15 أي عدد الأسطر التي سيتم فيها عرض الحرف

 

وقد إخترت 15 هذا بحساب حرف الألف مع الهمزه " أ "سيحدد لي عدد البيكسل فوق السطر وعرف الـ"ي" المكسوره ستحدد لي عدد البيكسل أسفل السطر

 

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

 

لا يهم شكل الحروف (نوع الخط :D ) فهذا مشروع بحد ذاته لأن تحسين الخط يعتمد على تمثيل الحرف في عدد أكبر ن البيكسل

 

المهم اظن أننا تجاوزنا مرحله تشكيل الحروف يمكن التقدم بالمشروع إلى مراحله أخرى

alphabet.rar

تم تعديل بواسطه الطالب39
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

سؤال خارج الموضوع: إذا كان الكود المكتوب بالـ C، فلماذا الموضوع بقسم الأسمبلي؟

 

إذا كان البرنامج سيستمر بها يرجي نقله للقسم المناسب.

 

 

و الله ولي التوفيق

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكراً لك أخي C++er  المشروع يجب أن يكون بالأسمبلي , ولكن لن أكتب الكود بنفسي بل سأكتب برنامج بالـC ليكتب الكود

أرجو منك تصحيح أي خلل تراه , ونقل الموضوع إن رأيت ذلك أفضل

 

الموضوع هنا اسمه "فكرة مشروع .. " وليس هو  الــ"مشروع" بعد

 

شكراً لك

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اليكم بعض التعديلات الجذرية التي قمت بها على الاحرف، بحيث تغطي الاحرف المطبوعة على الكيبورد

مثل : ة ى آ لا لآ ؤ ء ئ إ لإ أ

ومن ثم قمت بتعديل بسيط على الكود ليقبل المعطيات الجديدة. (بعد اذنك اخي مصطفى)

 

جربوه واعطوني رأيكم 

 

My alphabet.rar

تم تعديل بواسطه eng.ahmadshalabi
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
  • 0

الموضوع هنا اسمه "فكرة مشروع .. " وليس هو  الــ"مشروع" بعد

بالنسبة لي عندي امتحانات منذ 18 هذا الشهر ولغاية 15 الشهر القادم ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .