热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

画反走样线的函数

procedureAALine(x1,y1,x2,y2:single;color:tcolor;canvas:tcanvas);functionCrossFadeColo
procedure AALine(x1,y1,x2,y2 : single; color : tcolor; canvas : tcanvas);
function CrossFadeColor(FromColor,ToColor : TColor; Rate : Single) : TColor;
var r,g,b : byte;
begin
  r:=Round(GetRValue(FromColor)*Rate+GetRValue(ToColor)*(1-Rate));
  g:=Round(GetGValue(FromColor)*Rate+GetGValue(ToColor)*(1-Rate));
  b:=Round(GetBValue(FromColor)*Rate+GetBValue(ToColor)*(1-Rate));
  Result:=RGB(r,g,b);
end;
procedure hpixel(x : single; y : integer);
var FadeRate : single;
begin
  FadeRate:=x-trunc(x);
  with canvas do
  begin
    pixels[trunc(x),y]:=CrossFadeColor(Color,Pixels[Trunc(x),y],1-FadeRate);
    pixels[trunc(x)+1,y]:=CrossFadeColor(Color,Pixels[Trunc(x)+1,y],FadeRate);
  end;
end;

procedure vpixel(x : integer; y : single);
var FadeRate : single;
begin
  FadeRate:=y-trunc(y);
  with canvas do
  begin
    pixels[x,trunc(y)]:=CrossFadeColor(Color,Pixels[x,Trunc(y)],1-FadeRate);
    pixels[x,trunc(y)+1]:=CrossFadeColor(Color,Pixels[x,Trunc(y)+1],FadeRate);
  end;
end;

var i : integer;
    ly,lx,currentx,currenty,deltax,deltay,l,skipl : single;
begin
  if (x1<>x2) or (y1<>y2) then
  begin
    currentx:=x1;
    currenty:=y1;
    lx:=abs(x2-x1);
    ly:=abs(y2-y1);

    if lx>ly then
    begin
      l:=trunc(lx);
      deltay:=(y2-y1)/l;
      if x1>x2 then
      begin
        deltax:=-1;
        skipl:=(currentx-trunc(currentx));
      end else
      begin
        deltax:=1;
        skipl:=1-(currentx-trunc(currentx));
      end;
    end else
    begin
      l:=trunc(ly);
      deltax:=(x2-x1)/l;
      if y1>y2 then
      begin
        deltay:=-1;
        skipl:=(currenty-trunc(currenty));
      end else
      begin
        deltay:=1;
        skipl:=1-(currenty-trunc(currenty));
      end;
    end;

    currentx:=currentx+deltax*skipl;
    currenty:=currenty+deltay*skipl;{}

    for i:=1 to trunc(l) do
    begin
      if lx>ly then vpixel(trunc(currentx),currenty) else hpixel(currentx,trunc(currenty));
      currentx:=currentx+deltax;
      currenty:=currenty+deltay;
    end;
  end;
end;
 

推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 一、MyEclipse中的一些常用的快捷键:ctrl+shift+x大写ctrl+shift+y小写alt+内容提示写住方法的时候可以先写main然后按alt+就可以了ctrl+1 ... [详细]
  • Imtryingtomakeawebsiteinwhichauserinputsdetailsononescreen,andtheyarepostedonto ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
author-avatar
安乐乐520
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有