创建RGB、CMYK颜色分量圆代码
创建RGB分量圆:
function CreateRGBCircles(const size: INTEGER;
const Rflag, Gflag, Bflag: BOOLEAN): TBitmap;
var
AdjustedSize: INTEGER;
Border: INTEGER;
i, iR, iG, iB: INTEGER;
j, jR, jG, jB: INTEGER;
jOffset: INTEGER;
RadiusSquared: INTEGER;
row: pRGBTripleArray;
function DistanceSquared(const x1, y1, x2, y2: INTEGER): INTEGER;
begin
RESULT := SQR(x1 - x2) + SQR(y1 - y2)
end {两点间距平方};
begin
Border := MulDiv(size, 5, 1000);
AdjustedSize := size - 2 * Border;
RadiusSquared := SQR(MulDiv(AdjustedSize, 2, 6));
iR := Border + MulDiv(AdjustedSize, 2, 6);
iG := Border + MulDiv(AdjustedSize, 3, 6);
iB := Border + MulDiv(AdjustedSize, 4, 6);
//RGB颜色圈内的横坐标
jOffset := ROUND(AdjustedSize * (2 - SQRT(3)) / 12);
jR := jOffset + Border + Round(AdjustedSize * (2 + SQRT(3)) / 6);
jG := jOffset + Border + MulDiv(AdjustedSize, 2, 6);
jB := jR;
//RGB颜色圈内的纵坐标
RESULT := TBitmap.Create;
//输出位图
RESULT.Width := size;
RESULT.Height := size;
RESULT.PixelFormat := pf24bit;
RESULT.Canvas.Brush.Color := RGB(0, 0, 0);
// 黑色背景
RESULT.Canvas.FillRect(RESULT.Canvas.ClipRect);
//填充
for j := 0 to RESULT.Height - 1 do
begin
row := RESULT.Scanline[j];
for i := 0 to RESULT.Width - 1 do
begin
with row[i] do
begin
if Rflag and (DistanceSquared(i, j, iR, jR) < RadiusSquared)
then rgbtRed := 255;
//红色分量为255
if GFlag and (DistanceSquared(i, j, iG, jG) < RadiusSquared)
then rgbtGreen := 255;
//绿色分量为255
if BFlag and (DistanceSquared(i, j, iB, jB) < RadiusSquared)
then rgbtBlue := 255
//蓝色分量为255
end
end
end
end ;
创建CMYK分量圆:
function CreateCMYCircles(const size: INTEGER;
const Cflag, Mflag, Yflag: BOOLEAN): TBitmap;
var
AdjustedSize: INTEGER;
Border: INTEGER;
i, iC, iM, iY: INTEGER;
j, jC, jM, jY: INTEGER;
jOffset: INTEGER;
RadiusSquared: INTEGER;
row: pRGBTripleArray;
function DistanceSquared(const x1, y1, x2, y2: INTEGER): INTEGER;
begin
RESULT := SQR(x1 - x2) + SQR(y1 - y2)
end;
begin
Border := MulDiv(size, 5, 1000);
AdjustedSize := size - 2 * Border;
RadiusSquared := SQR(MulDiv(AdjustedSize, 2, 6));
iC := Border + MulDiv(AdjustedSize, 2, 6);
iM := Border + MulDiv(AdjustedSize, 3, 6);
iY := Border + MulDiv(AdjustedSize, 4, 6);
//CMY颜色圈的点的横坐标
jOffset := ROUND(AdjustedSize * (2 - SQRT(3)) / 12);
jC := jOffset + Border + Round(AdjustedSize * (2 + SQRT(3)) / 6);
jM := jOffset + Border + MulDiv(AdjustedSize, 2, 6);
jY := jC;
//CMY颜色圈的点的纵坐标
RESULT := TBitmap.Create;
RESULT.Width := size;
RESULT.Height := size;
RESULT.PixelFormat := pf24bit;
//创建输出位图
RESULT.Canvas.Brush.Color := RGB(255, 255, 255); // white
RESULT.Canvas.FillRect(RESULT.Canvas.ClipRect);
//白色背景
for j := 0 to RESULT.Height - 1 do
begin
row := RESULT.Scanline[j];
for i := 0 to RESULT.Width - 1 do
begin
with row[i] do
begin
if Cflag and (DistanceSquared(i, j, iC, jC) < RadiusSquared)
then rgbtRed := 0;
//红色分量为0
if MFlag and (DistanceSquared(i, j, iM, jM) < RadiusSquared)
then rgbtGreen := 0;
//绿色分量为0
if YFlag and (DistanceSquared(i, j, iY, jY) < RadiusSquared)
then rgbtBlue := 0;
end //蓝色分量为0
end
end
end;
转载于:https://www.cnblogs.com/zxg1982/archive/2009/03/22/1418897.html
创建RGB、CMYK颜色分量圆代码相关推荐
- RGB CMYK颜色理解及性质(1)
RGM模式 首次听到RGB,好似初中生物课上,现已忘记.再接触便是三年后,学的计算机,也是迷迷糊糊,不就是红绿蓝吗嘛,这有啥难的. 有的人就说了,为啥这三个在一起就变了样.红不是红,不是绿的- 图片是 ...
- cdr里怎么看html颜色代码大全,CDR中查看是RGB还是CMYK颜色的三种方法
使用CorelDRAW作出的文件在印刷的时候,要做印前检查,区别颜色模式,以保证能正常印刷效果.那么如何查看一个设计文件是RGB还是CMYK颜色,文本将介绍三种方法以做详细说明. 方法一:查找和替换 ...
- cdr里怎么看html颜色代码大全,CDR中怎么查看一个设计文件是RGB还是CMYK颜色-CDR颜色模式查看方法_好特教程...
使用CorelDRAW作出的文件在印刷的时候,要做印前检查,区别颜色模式,以保证能正常印刷效果.那么如何查看一个设计文件是RGB还是CMYK颜色,文本将介绍三种方法以做详细说明. 方法一:查找和替换 ...
- 使用Opencv获取每个像素点的RGB颜色分量/HSV颜色分量
一. 所需结构体 CvScalar 结构体介绍 typedef struct CvScalar { double val[4]; //BGRA}CvScalar; 二. 所需函数 cvGet2D 函 ...
- php生成cmyk图片,用ImageMagick创建cmyk颜色的图片,在photoshop中显示的cmyk值不一样!...
各位好!我在php里用ImageMagick创建cmyk颜色的图片,在photoshop中显示的cmyk值不一样!比如:在ImageMagick通过ImagickPixel设置的颜色为cmyk(0,0 ...
- RGB,CMYK,HSB各种颜色表示的转换
一.表示颜色的方式有很多种,如RGB,CMYK,HSB,Hex等等 1.RGB:这种表示颜色由三原色构成,通过红,绿,蓝三种颜色分量的不同,组合成不同的颜色,例如,100%红+100%绿混合可以得到黄 ...
- opencv4 c++ RGB颜色模式和CMYK颜色模式的相互转化
CMYK转RGB 今天看了一位大佬rgb转cmyk颜色模式的文章.但是我发现网上没有什么cmyk转rgb颜色模式的代码.我就根据大佬的代码写了一个.思路就是把大佬的代码逆向转换一下. rgb转cmyk ...
- [html] HTML采用的是RGB颜色还是CMYK颜色?为什么?
[html] HTML采用的是RGB颜色还是CMYK颜色?为什么? 用在电脑或者手机上显示的大部分都是RGB,用于需要印刷的都用CMYK 并且不同的显示器色域不同会导致色差,不同浏览器也有自己的调色板 ...
- cdr 颜色的html怎么查,CDR中如何查看是RGB还是CMYK颜色
原标题:CDR中如何查看是RGB还是CMYK颜色 使用作出的文件在印刷的时候,要做印前检查,区别颜色模式,以保证能正常印刷效果.那么如何查看一个设计文件是RGB还是CMYK颜色,文本将介绍三种方法以做 ...
最新文章
- 2021世界人工智能大会最高奖项——卓越人工智能引领者奖(Super AI Leader,简称SAIL奖)在大会开幕式揭晓...
- [ZJOI2007]棋盘制作 报表统计 矩阵游戏 时态同步
- UA OPTI544 量子光学13 场的量子化描述
- MyBatis 源码分析 - 映射文件解析过程
- 两大主流Web服务器之分析与对比
- [react] 状态管理器解决了什么问题?什么时候用状态管理器?
- u盘启动 联想一体机_联想笔记本电脑怎么重装win10系统
- 计算机科学专业必读的44册经典著作
- 大家马致远是哪个朝代的,马致远作品赏析
- Android下异步扫描视频文件缩略图
- php视频弹幕,php超仿bilbili播放器带弹幕库后台管理系统
- autojs今日头条急速脚本
- python根据服务器sn号查询DELL服务器型号、出厂时间、过保时间
- VOA special English 下载 py
- 国产linux系统 深度6,国产Linux系统深度Deepin体验
- swper_swipe和swiper的区别
- 第一周学习前端html的知识总结与感悟
- makefile编写helloworld
- 手写数字识别画板前后端实现 | Flask+深度神经网络
- 基础地图-在线地图-天地图(无标注)