全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1017
推到 Plurk!
推到 Facebook!

怎么样使图片上产生随机干扰

尚未結案
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-04 20:03:54 IP:218.64.xxx.xxx 未訂閱
var  idx: integer;
 procedure TForm1.Button1Click(Sender: TObject);
 begin
  Image1.Canvas.Font.Color := clRed;
  Image1.Canvas.Font.Size := 42;
  if Edit1.Text <> '' then
  begin
    image1.Canvas.TextOut(0, 0, edit1.Text[idx]) ;
    image2.picture.Bitmap.Assign(image1.picture.Bitmap);
  end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  idx := 1;
 Timer1.Interval := 2000;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Inc(idx);
 Image1.Canvas.Font.Color := clRed;
  Image1.Canvas.Font.Size := 42;
  if Edit1.Text <> ' ' then
  begin
    image1.Canvas.TextOut(0, 0, edit1.Text[idx]) ;
    image2.picture.Bitmap.Assign(image1.picture.Bitmap);
  if idx > Length(edit1.Text) then
    idx := 1;
  end;
end;
在上面的程序中已经实现了将edit1.text中的字符读取道bitmap中,我想问的问题是怎么样能让读取的字符在bitmap中有干扰点,还有一个问题就是如果edit.text上是汉字时,bitmap上显示出来的不是汉字??
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-04 20:10:35 IP:202.39.xxx.xxx 未訂閱
用 WideString 的方式試試:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  s: WideString;
begin
  Inc(idx);
  Image1.Canvas.Font.Color := clRed;
  Image1.Canvas.Font.Size := 42;      s := Edit1.Text;
  if s <> ' ' then
  begin
    image1.Canvas.TextOut(0, 0, s[idx]) ;
    image2.picture.Bitmap.Assign(image1.picture.Bitmap);
    if idx > Length(s) then
      idx := 1;
  end;
end;
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-04 21:01:40 IP:218.64.xxx.xxx 未訂閱
多谢hagar,帮我解决了显示汉字的问题!!! 还有一个问题就是如果在显示的图片上加上几个 干扰点
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-04 21:31:49 IP:61.216.xxx.xxx 未訂閱
引言: 多谢hagar,帮我解决了显示汉字的问题!!! 还有一个问题就是如果在显示的图片上加上几个 干扰点
請問一下, 什麼是干擾點?
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-04 21:56:47 IP:218.64.xxx.xxx 未訂閱
就是bitmap 上除了要显示的字符如A外,其它地方可能也有红点,就象纸上写了个A,可是不小心滴上了一点墨水,这样可以实现吗?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-05 09:04:07 IP:202.39.xxx.xxx 未訂閱
那大概是這樣的方式(要加幾個點自己決定):
procedure TForm1.Timer1Timer(Sender: TObject);
var
  s: WideString;
  iWidth: integer;
  i,j: integer;
  iDot: integer;
begin
  Inc(idx);
  Image1.Canvas.Font.Color := clRed;
  Image1.Canvas.Font.Size := 42;      s := Edit1.Text;
  if s <> ' ' then
  begin
    image1.Canvas.TextOut(0, 0, s[idx]) ;        iWidth := image1.Canvas.TextWidth(s[idx]);
    for i := 0 to Image1.Height - 1 do
      for j := 1 to 3 do
      begin
        iDot := Trunc(Random(iWidth));
        image1.Canvas.Pixels[i, iDot] := clRed;
      end;        image2.picture.Bitmap.Assign(image1.picture.Bitmap);
    if idx > Length(s) then
      idx := 1;
  end;
end;
系統時間:2024-09-29 6:33:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!