المشاركات : 421
المواضيع 77
:
: 195
الإنتساب : Dec 2008
السلام عليكم ورحمة الله وبركاته
ماهي الفكرة التي تتم بها برمجة برنامج عند كتابة حرف الباء مثلا بالخط Traditional Arabic على سبيل المثال يحوله إلى matrix عبارة على 0و1 هكذا
0000000000
0000000000
0100000010
0111111110
0000100000
0000000000
0000000000
0000000000
المشاركات : 219
المواضيع 24
:
: 16
الإنتساب : May 2009
السلام عليكم
إحدى الأفكار أن نقوم بطباعة الحرف بلون معين في صورة تكون خلفيتها بلون مخالف،
ثم قراءة الصورة نقطة نقطة (Pixel)، فالنقطة التي هي بلون الحرف تقرأ (1) و النقطة بلون الخلفية تقرأ (0).
المثال التالي يعبر عن الفكرة.
تكون لدينا شاشة = فورم بها :
1- Edit1 لنكتب فيه الأحرف المراد قراءتها
2 – Memo1 لعرض النتائج، ويستحسن أن كون الخط فيه من نوع Courier New
وأن تكون ألواح التحريك ظاهرة Memo1.ScrollBars = ssBoth
3- Button1 نضع في حدث الضغط عليه التعليمات التالية:
PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
Bitmap: TBitmap;
s: string;
sRow: string;
ARect: TRect;
X, Y: integer;
TextWidth, TextHeight: integer;
begin
s := Edit1.Text;
Memo1.Clear;
Bitmap := TBitmap.Create;
try
Bitmap.Canvas.Font.Assign(Edit1.Font);
TextWidth := Bitmap.Canvas.TextWidth(S);
TextHeight := Bitmap.Canvas.TextHeight(S);
ARect := Rect(0, 0, TextWidth - 1, TextHeight - 1);
Bitmap.Width := TextWidth;
Bitmap.Height := TextHeight;
Bitmap.Canvas.Brush.Color := 0;
Bitmap.Canvas.FillRect(ARect);
Bitmap.Canvas.Font.Color := clWhite;
Bitmap.Canvas.TextOut(0, 0, s);
for Y := 0 to ARect.Bottom do
begin
sRow := '';
for X := 0 to ARect.Right do
begin
if Bitmap.Canvas.Pixels[x, y] = 0 then
sRow := sRow + '.'
else
sRow := sRow + '#';
end;
Memo1.Lines.Add(sRow);
end;
finally
//Image1.Picture.Assign(Bitmap);
Bitmap.Free;
end;
end;
إذا أردنا رؤية محتويات الصورة التي رسمناها يمكن إدراج مكون Image1 وتخصيص الصورة له:
PHP كود :
Image1.Picture.Assign(Bitmap);
المشاركات : 421
المواضيع 77
:
: 195
الإنتساب : Dec 2008
وعليكم السلام
جزاك الله خيرا أخي shagrouni سأحاول فهم الكود ولكن ماذا تقصد بعرض محتويات الصورة ؟