كيف يتم تمثيل الخطوط على شكل 0 و 1؟
#2
السلام عليكم

إحدى الأفكار أن نقوم بطباعة الحرف بلون معين في صورة تكون خلفيتها بلون مخالف،
ثم قراءة الصورة نقطة نقطة (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؟ - بواسطة shagrouni - 13-05-2010, 12:18 PM

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم