一个很笨的字体勾边的方法(这个方法简单聪明,而且通用)

[delphi] view plain copy

print?

  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls, ExtCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. img_1: TImage;
  9. Btn_1: TButton;
  10. Btn_2: TButton;
  11. procedure Btn_1Click(Sender: TObject);
  12. procedure Btn_2Click(Sender: TObject);
  13. private
  14. { Private declarations }
  15. public
  16. { Public declarations }
  17. end;
  18. var
  19. Form1: TForm1;
  20. implementation
  21. {$R *.dfm}
  22. procedure TForm1.Btn_1Click(Sender: TObject);
  23. begin
  24. img_1.Canvas.Font.Size :=140;
  25. img_1.Canvas.Font.Name := ‘华文行楷‘;
  26. img_1.Canvas.TextOut( 5,5,‘罗韵睿‘);
  27. end;
  28. procedure TForm1.Btn_2Click(Sender: TObject);
  29. procedure SetPointerColor(x,y:Integer);
  30. begin
  31. if img_1.Canvas.Pixels[x,y] <>clBlack then
  32. img_1.Canvas.Pixels[x,y] := clRed;
  33. end;
  34. var
  35. i,j :Integer;
  36. p:Pointer;
  37. begin
  38. for I := 0 to img_1.Width -1 do
  39. for j := 0 to img_1.Height - 1 do begin
  40. if img_1.Canvas.Pixels[i,j] =clBlack then begin
  41. SetPointerColor(i-1,j);
  42. SetPointerColor(i+1,j);
  43. SetPointerColor(i,j-1);
  44. SetPointerColor(i,j+1);
  45. SetPointerColor(i+1,j+1);
  46. SetPointerColor(i-1,j-1);
  47. SetPointerColor(i-1,j+1);
  48. SetPointerColor(i+1,j-1);
  49. end;
  50. end;
  51. end;
  52. end.

http://blog.csdn.net/aroc_lo/article/details/46976957

时间: 2024-12-29 09:50:55

一个很笨的字体勾边的方法(这个方法简单聪明,而且通用)的相关文章

一个很笨的方法,写脚本来实现自动调dmp,找有用的数据

很久很久以前用到的方法, 方法挺笨的,但是算是比较实用吧. 全自动的调试dmp,最后只要结果. 谁用得着就给谁看吧. 这里需要两个脚本 1:启动脚本,是一个批处理文件,用来启动调试器,来加载dmp和调试脚本. 2:调试脚本,是一个windbg脚本文件,用来操作调试器,是真正工作的脚本. 现在开始说明脚本内容. 1:启动脚本模板 for /f %%i in ('dir "要获取的dmp文件,可以加通配符* "  /s /b') do (cd /d "调试器路径"cdb

高效快捷解决一个TextView显示多种字体的控件SpannableTextView

这个控件本人强烈推荐,它会使得布局非常的简单且高效: 下面这个布局如果是你,你会用多少层?多少控件生成? 告诉你吧,一个SpannableTextView控件就搞定了! 它把TextView和Spannable封装在了一起,可以在一个TextView中显示不同的字体颜色,大小,背景色等: 它支持如下样式: * Babushka Method      Internal Span *     textSize            AbsoluteSizeSpan *     textColor 

一个很实用的前端框架Zui

杰哥给我推荐了一个很有用的前端框架-Zui,我看着觉得很神奇的,因为有很多我都不懂.在这里分享总结一下.首先,这是一个中国自己开发的框架,比起很多外国的框架来说,有很详细的API,而且是全中文的,不需要再经过其他人的翻译了.然后,它的内容十分丰富,很系统的分为了:基础,控件,组件,JS插件,视图几大块:而且使用起来,只需要导入js,在适当的地方加上正确的class类就可以了.对于,没有什么js基础的人,也是十分容易上手的.下面我就大体的介绍一下它的各个模块的功能.基础:基础里面我觉得很有用的主要

第一次作业:假装这里有一个很响亮的标题

---恢复内容开始--- 一.结缘计算机 缘分可以说是一个很奇妙的东西,喜欢一件事物往往从对它的美好幻想开始.相信许多人想到计算机都会将它与玩游戏联系在一起,对于我却不然,在我看来编程是一个创造的过程--这就是我对于计算机最初的美好幻想.试想通过编写一些代码便能够实现自己心中所想,这难道不是一件令人兴奋的事吗?它执行你的指令,完成你的任务,实现你的想法,这在当时是对我非常有吸引力的,于是我第一志愿便填报了计算机专业. 你认为你的条件如何?其实我并不知道这个问题应该如何回答,物质条件?素质方面?条

Go map中一个很重要的特性

先看一段代码: func main() { m := make(map[int]string) m[1] = "a" m[2] = "b" m[3] = "c" for k, v := range m { fmt.Println(k, v) } fmt.Println("-----------------") mm := make(map[int]string) mm[1] = "a" mm[2] = &q

一个很奇怪的问题

先来看看我的一段代码: 1 ArrayList<Integer> array = new ArrayList<Integer>(); 2 3 for(int i = 0;i<100;i++){ 4 array.add(i); 5 } 6 for(int i=0;i<array.size();i++){ 7 // array.remove(new Integer(i)); 8 array.remove(i); 9 } 你觉得这样能不能把array里面的东西都删除呢? 输出

UIViewAdditions(一个很方便使用的工具类吧)

我们在工程中,或多或少的要修改控件的坐标-宽度-高度,于是,经常性的见到大家self.view.frame.origin.x,self.view.frame.size.width.........相当的麻烦,在这里向大家推荐一个比较好的工具类,是UIView的类目,它里面对于求坐标,求高度什么的做了封装,很方便大家调用. @下载链接:点击这里 @.h #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interfa

一个很好的php分词类库

PHPAnalysis源程序下载与演示: PHP分词系统 V2.0 版下载 | PHP分词系统演示 | PHPAnalysis类API文档   原文连接地址:http://www.phpbone.com/phpanalysis/ 分词系统简介:PHPAnalysis分词程序使用居于unicode的词库,使用反向匹配模式分词,理论上兼容编码 更广泛,并且对utf-8编码尤为方便. 由于PHPAnalysis是无组件的系统,因此速度会比有组件的稍慢,不过在大量分词中,由于边分词边完成词库载入,因此内

为何很大的浮点大数加一个很小的数计算结果不是预期

通常浮点数被表示成N=S*rj S称为尾数,可正可负,j称为阶码可正可负.r是基数,在计算机中取以2的倍数. 计算机中为了提高精度,进行规格化操作:即假设N=11.0101  则规格化表示为N=0.110101*210表示,因为该规格化使得浮点数的表示精度最高. 机器中浮点数由两部分组成:阶码和尾数.基数为2 阶码由阶符跟阶码组成,尾数由数符跟尾数组成 其中阶码是整数,阶符和阶码的位数m合起来反映浮点数的表示范围及小数点的实际位数.尾数是小数,其位数反映了浮点数的精度. 还有机器零这个概念:即浮