delphi4arab منتديات دلفي للعرب

نسخة كاملة : كيف يتم تمثيل الخطوط على شكل 0 و 1؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

ماهي الفكرة التي تتم بها برمجة برنامج عند كتابة حرف الباء مثلا بالخط Traditional Arabic على سبيل المثال يحوله إلى matrix عبارة على 0و1 هكذا

0000000000
0000000000
0100000010
0111111110
0000100000
0000000000
0000000000
0000000000
السلام عليكم

إحدى الأفكار أن نقوم بطباعة الحرف بلون معين في صورة تكون خلفيتها بلون مخالف،
ثم قراءة الصورة نقطة نقطة (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); 
وعليكم السلام
جزاك الله خيرا أخي shagrouni سأحاول فهم الكود ولكن ماذا تقصد بعرض محتويات الصورة ؟