delphi4arab منتديات دلفي للعرب
كيف يتم تمثيل الخطوط على شكل 0 و 1؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف يتم تمثيل الخطوط على شكل 0 و 1؟ (/showthread.php?tid=2002)



كيف يتم تمثيل الخطوط على شكل 0 و 1؟ - ALG2009 - 12-05-2010

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

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

0000000000
0000000000
0100000010
0111111110
0000100000
0000000000
0000000000
0000000000


كيف يتم تمثيل الخطوط على شكل 0 و 1؟ - shagrouni - 13-05-2010

السلام عليكم

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



كيف يتم تمثيل الخطوط على شكل 0 و 1؟ - ALG2009 - 13-05-2010

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