13-05-2010, 12:18 PM
السلام عليكم
إحدى الأفكار أن نقوم بطباعة الحرف بلون معين في صورة تكون خلفيتها بلون مخالف،
ثم قراءة الصورة نقطة نقطة (Pixel)، فالنقطة التي هي بلون الحرف تقرأ (1) و النقطة بلون الخلفية تقرأ (0).
المثال التالي يعبر عن الفكرة.
تكون لدينا شاشة = فورم بها :
1- Edit1 لنكتب فيه الأحرف المراد قراءتها
2 – Memo1 لعرض النتائج، ويستحسن أن كون الخط فيه من نوع Courier New
وأن تكون ألواح التحريك ظاهرة Memo1.ScrollBars = ssBoth
3- Button1 نضع في حدث الضغط عليه التعليمات التالية:
إذا أردنا رؤية محتويات الصورة التي رسمناها يمكن إدراج مكون Image1 وتخصيص الصورة له:
إحدى الأفكار أن نقوم بطباعة الحرف بلون معين في صورة تكون خلفيتها بلون مخالف،
ثم قراءة الصورة نقطة نقطة (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);

