BGRABitmap图像操作8:轴向的木质纹理
来源:互联网 发布:出书知乎 编辑:程序博客网 时间:2024/04/25 02:40
unit Unit1;{$mode objfpc}{$H+}interfaceuses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, BGRABitmap, BGRABitmapTypes, BGRAGradients, math;type { TForm1 } TForm1 = class(TForm) procedure FormPaint(Sender: TObject); private { private declarations } public { public declarations } end;var Form1: TForm1;implementation{$R *.lfm}{ TForm1 }function Interp256(value1,value2,position: integer): integer; inline;begin result := (value1*(256-position) + value2*position) shr 8;end;function Interp256(color1,color2: TBGRAPixel; position: integer): TBGRAPixel; inline;begin result.red := Interp256(color1.red,color2.red, position); result.green := Interp256(color1.green,color2.green, position); result.blue := Interp256(color1.blue,color2.blue, position); result.alpha := Interp256(color1.alpha,color2.alpha, position);end;function CreateWoodTexture(tx,ty: integer): TBGRABitmap;var colorOscillation, globalColorVariation: integer; p: PBGRAPixel; i: Integer;begin result := CreateCyclicPerlinNoiseMap(tx,ty); p := result.Data; for i := 0 to result.NbPixels-1 do begin colorOscillation := round(sqrt((sin(p^.red*Pi/16)+1)/2)*256); globalColorVariation := p^.red; p^:= Interp256( Interp256(BGRA(247,188,120),BGRA(255,218,170),colorOscillation), Interp256(BGRA(157,97,60),BGRA(202,145,112),colorOscillation), globalColorVariation); inc(p); end;end;function CreateVerticalWoodTexture(tx,ty: integer): TBGRABitmap;var globalPos: single; colorOscillation, globalColorVariation: integer; p: PBGRAPixel; i: Integer; x: integer;begin result := CreateCyclicPerlinNoiseMap(tx,ty); p := result.Data; x := 0; for i := 0 to result.NbPixels-1 do begin globalPos := p^.red*Pi/32+x*2*Pi/tx*8; colorOscillation := round(sqrt((sin(globalPos)+1)/2)*256); globalColorVariation := round(sin(globalPos/8)*128+128); p^:= Interp256( Interp256(BGRA(247,188,120),BGRA(255,218,170),colorOscillation), Interp256(BGRA(157,97,60),BGRA(202,145,112),colorOscillation), globalColorVariation); inc(p); inc(x); if x = tx then x := 0; end;end;procedure TForm1.FormPaint(Sender: TObject);var image,tex: TBGRABitmap;begin image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace))); tex := CreateVerticalWoodTexture(100,100); image.FillRoundRectAntialias(20,20,300,200,20,20,tex); image.RoundRectAntialias(20,20,300,200,20,20,BGRABlack,1); tex.free; image.Draw(Canvas,0,0,True); image.free;end;end.
0 0
- BGRABitmap图像操作8:轴向的木质纹理
- BGRABitmap图像操作8:木质纹理
- BGRABitmap图像操作8:纹理
- BGRABitmap图像操作8:彩色纹理
- BGRABitmap图像操作8:彩色纹理,阈值
- BGRABitmap图像操作8:大理石纹理
- BGRABitmap图像操作8:纹理,前面椭圆外加一圆角长方形
- BGRABitmap图像操作8:用正弦函数生成纹理
- BGRABitmap图像操作8:生成纹理,基本的Perlin噪声地图
- BGRABitmap图像操作10:使用纹理映射
- BGRABitmap图像操作14:BGRABitmap的 Canvas2D
- BGRABitmap图像操作10:线型映射,让纹理图贴到多边形的边上
- BGRABitmap图像操作8:另一个阈值控制方式,生成迷彩纹理
- BGRABitmap图像操作9:用 phong 阴影制作纹理
- BGRABitmap图像操作9b:巧克力纹理背景
- BGRABitmap图像操作10:使用Affine 变换进行纹理映射
- BGRABitmap图像操作13:BGRABitmap的坐标系统
- BGRABitmap图像操作6:平的线头
- 画圆环
- BGRABitmap图像操作8:木质纹理
- 自定义圆
- 形状匹配之形状上下文(Shape context)
- Linux文件系统
- BGRABitmap图像操作8:轴向的木质纹理
- 自定义圆
- 自定义圆2
- 英语学习录——2016年8月
- android studio 2.0 当中简单的添加声音文件。
- freemarker <#rt/>作用
- androidstudio Emulator Control灰色
- [linux]vmware中linux虚拟机扩容
- linux下目录说明