BGRABitmap图像操作8:大理石纹理
2016-09-05 06:35
363 查看
unit Unit1; {$mode objfpc}{$H+} interface uses 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 CreateCustomTexture(tx,ty: integer): TBGRABitmap; var colorOscillation: integer; p: PBGRAPixel; i: Integer; begin result := CreateCyclicPerlinNoiseMap(tx,ty,1,1,1); p := result.Data; for i := 0 to result.NbPixels-1 do begin //colorOscillation := round(((sin(p^.red*Pi/32)+1)/2)*256); colorOscillation := round(power((sin(p^.red*Pi/80)+1)/2,0.2)*256); p^ := Interp256(BGRA(181,157,105),BGRA(228,227,180),colorOscillation); inc(p); end; end; procedure TForm1.FormPaint(Sender: TObject); var image,tex: TBGRABitmap; begin image := TBGRABitmap.Create(ClientWidth,ClientHeight,ColorToBGRA(ColorToRGB(clBtnFace))); tex := CreateCustomTexture(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.
相关文章推荐
- BGRABitmap图像操作8:轴向的木质纹理
- BGRABitmap图像操作8:生成纹理,基本的Perlin噪声地图
- BGRABitmap图像操作10:使用纹理映射
- BGRABitmap图像操作8:彩色纹理
- BGRABitmap图像操作10:使用Affine 变换进行纹理映射
- BGRABitmap图像操作11:前面组合变形再结合扭曲
- BGRABitmap图像操作8:另一个阈值控制方式,生成迷彩纹理
- BGRABitmap图像操作8:用正弦函数生成纹理
- BGRABitmap图像操作8:纹理,前面椭圆外加一圆角长方形
- BGRABitmap图像操作14:复杂形状
- BGRABitmap图像操作6:开放线头,即一头为突出,另一头为凹进
- BGRABitmap图像操作10:线型映射,让纹理图贴到多边形的边上
- BGRABitmap图像操作3:用鼠标在窗体画断续的曲线
- BGRABitmap图像操作12:另一种酷炫阴影
- BGRABitmap图像操作13:BGRABitmap的坐标系统
- BGRABitmap图像操作11:定制Scanner,渐变生成
- BGRABitmap图像操作8:纹理
- BGRABitmap图像操作9b:巧克力纹理背景
- BGRABitmap图像操作7:贝塞尔曲线
- BGRABitmap图像操作8:彩色纹理,阈值