请问c#怎么做调色板?

池草不成梦 2010-08-14 08:41:58
自己写了半天整不出来,网上找也没有。

就是做一个类似调色板的选择框, 点击调色板上的某个色块, 然后按提交的时候将色块的值(16进制)转成中文写进数据库。
怎么写呢?求助!
...全文
645 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
池草不成梦 2010-08-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 guohelv0519 的回复:]
上述代码有些小错误,修改如下:


HTML code

<SCRIPT language>
var sInitColor = null;
function callColorDlg()
{
if (sInitColor == null)
var sColor = dlgHelper.ChooseColorDlg();
else
var……
[/Quote]

谢谢,这个可以,但是我需要的是在一个TextBox框里改变颜色,而你的是改变body的背景色。
JS我也不大会,好像document没法读到TextBox的ID值。怎么解决呢?

具体就是
<script language="javascript>
...
</script>

<form id="form1" runat="server">
<asp:TextBox id="pll" runat="server" size="30" />
</form>

<object id="dlgHelper" classid="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0"
height="0">
</object>
<input type="button" value="请选择颜色" onclick="callColorDlg()" />


JS里的body换成pll,但是貌似读不出来,怎么解决呢?谢谢!
zhao_zps 2010-08-14
  • 打赏
  • 举报
回复

if (colorDialog1.ShowDialog() == DialogResult.OK)
{
color = colorDialog1.color.ToString;
}

li_east_fai 2010-08-14
  • 打赏
  • 举报
回复
加我为好友 把你邮箱发过来我给你传个
li_east_fai 2010-08-14
  • 打赏
  • 举报
回复
把你邮箱给我 我给你发个源码
yaohuitime 2010-08-14
  • 打赏
  • 举报
回复
ColorDialog
guohelv0519 2010-08-14
  • 打赏
  • 举报
回复
上述代码有些小错误,修改如下:


<SCRIPT language>
var sInitColor = null;
function callColorDlg()
{
if (sInitColor == null)
var sColor = dlgHelper.ChooseColorDlg();
else
var sColor = dlgHelper.ChooseColorDlg(sInitColor);
sColor = sColor.toString(16);
if (sColor.length < 6)
{
var sTempString = "000000".substring(0,6-sColor.length);
sColor = sTempString.concat(sColor);
}
document.body.bgColor = sColor;
}
</SCRIPT>
<OBJECT id="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width=0 height=0></OBJECT>
<input type=button value="请选择颜色" onclick="callColorDlg()">
guohelv0519 2010-08-14
  • 打赏
  • 举报
回复
不要总是希望什么都自己来写,这种想法是不对的。

<SCRIPT language>
var sInitColor = null;
function callColorDlg()
{
if (sInitColor == null)
var sColor = dlgHelper.ChooseColorDlg();
else
var sColor = dlgHelper.ChooseColorDlg(sInitColor);
sColor = sColor.toString(16);
if (sColor.length < 6)
{
var sTempString = "000000".substring(0,6-sColor.length);
sColor = sTempString.concat(sColor);
}
document.body.bgColor = sColor;
}
</SCRIPT>
<OBJECT CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width=0 height=0></OBJECT>
<input type=button value="请选择颜色" >
wuyq11 2010-08-14
  • 打赏
  • 举报
回复
colorDialog1.ShowDialog();
cl = colorDialog1.Color;
button1.BackColor = cl;
int c=cl.ToArgb();
大Y 2010-08-14
  • 打赏
  • 举报
回复
帮顶了。期待中。。
池草不成梦 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 jrl5365 的回复:]
HTML code
<html>
<head>
<script language="javascript" type="text/javascript">
function findObj(n , d)
{
var p,i,x;
if(!d)d=document;
if((p=n.indexOf("?"))> 0 && parent.frame……
[/Quote]

..色块也太模糊了..跟马赛克似的
池草不成梦 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zgke 的回复:]
ColorDialog _ColorDialog = new ColorDialog();
if (_ColorDialog.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(_ColorDialog.Color.R.ToString("X02") + _ColorDialog.Color.G.ToString("X02") +……
[/Quote]

能再具体一点吗?谢谢。
zgke 2010-08-14
  • 打赏
  • 举报
回复
ColorDialog _ColorDialog = new ColorDialog();
if (_ColorDialog.ShowDialog() == DialogResult.OK)
{
MessageBox.Show(_ColorDialog.Color.R.ToString("X02") + _ColorDialog.Color.G.ToString("X02") + _ColorDialog.Color.B.ToString("X02"));
}
jrl5365 2010-08-14
  • 打赏
  • 举报
回复
<html>   
<head>
<script language="javascript" type="text/javascript">
function findObj(n , d)
{
var p,i,x;
if(!d)d=document;
if((p=n.indexOf("?"))> 0 && parent.frames.length)
{
d=parent.frames[n.substring(p+1)].document;
n=n.substring(0,p);
}
if(!(x=d[n]) && d.all)
x=d.all[n];
for(i=0; !x && i <d.forms.length; i++)
{
x=d.forms[i][n];
}
for(i=0; !x && d.layers && i <d.layers.length; i++)
{
x=findObj(n , d.layers[i].document);
}
if(!x && d.getElementById)
{
x=d.getElementById(n);
return x;
}
}
function colorsa( a ,divColor , dataColor , viewColor )
{
divColor.style.display='none';
dataColor.value = a;
viewColor.style.backgroundColor='#'+a;
DisplayProductInfo('0');
//alert('#'+a);
}
var hexch=new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F');
function ToHex(n)
{
var h, l;
n=Math.round(n);
l=n%16;
h=Math.floor((n / 16)) % 16;
return (hexch[h]+hexch[l]);
}
function ToHex1(n)
{
var l1;
n=Math.round(n);
l1=n % 16;
return (hexch[l1]+hexch[l1]);
}
function wc(r, g, b, n, divColor , dataColor , viewColor)
{
r=((r*16+r)*3*(15 - n)+0x80*n) / 15;
g=((g*16+g)*3*(15 - n)+0x80*n) / 15;
b=((b*16+b)*3*(15 - n)+0x80*n) / 15;
document.write(' <td width="8" bgcolor="#'+ToHex(r)+ToHex(g)+ToHex(b)+'" onclick="colorsa(\''+ToHex(r)+ToHex(g)+ToHex(b)+ '\', ' + divColor + ' ,' + dataColor + ',' + viewColor + ');" onmouseout="this.style.backgroundImage=\'\';"> </td> ');
//document.write(' <td width="8" bgcolor="#'+ToHex(r)+ToHex(g)+ToHex(b)+'" onclick="colorsa(\''+ToHex(r)+ToHex(g)+ToHex(b)+'\');" onmouseover=" this.style.backgroundImage=\'url(color_bg.gif)\';" onmouseout="this.style.backgroundImage=\'\';"> </td> ');
}
var cnum=new Array(1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0);
function colortabl(divColor , dataColor , viewColor)
{
//onmouseover="document.getElementById(divBorder).display=\'block\';" onmouseout="document.getElementById(divBorder).display=\'none\';"
document.write('<table border="0" style="position:absolute;z-index:9999;" cellpadding="0" cellspacing="0" height="100" width="200"> ');
for(i=0; i < 15; i ++)
{
document.write(' <tr> ');
document.write(' <td bgcolor="#'+ToHex1(i)+ToHex1(i)+ToHex1(i)+'" height="8" width="8" onclick="colorsa(\''+ToHex1(i)+ToHex1(i)+ToHex1(i)+'\', ' + divColor + ',' + dataColor + ',' + viewColor + ' );" onmouseout="this.style.backgroundImage=\'\';"> </td> ');
//document.write(' <td bgcolor="#'+ToHex1(i)+ToHex1(i)+ToHex1(i)+'" height="8" width="8" onclick="colorsa(\''+ToHex1(i)+ToHex1(i)+ToHex1(i)+'\');" onmouseover="this.style.backgroundImage=\'url(color_bg.gif)\';" onmouseout="this.style.backgroundImage=\'\';"> </td> ');
for(j=0; j < 30; j ++)
{
n1=j % 5;
n2=Math.floor(j / 5)*3;
n3=n2+3;
wc((cnum[n3]*n1+cnum[n2]*(5 - n1)),(cnum[n3+1]*n1+cnum[n2+1]*(5 - n1)),(cnum[n3+2]*n1+cnum[n2+2]*(5 - n1)), i , divColor , dataColor , viewColor);
}
document.write(' </tr> ');
}
document.write(' </table>');
}
function showmeg()
{
//alert("asd");
var objs = document.getElementById("divBorder");
objs.style.display="block";
}
function hidmeg()
{
//alert("asd");
var objs = document.getElementById("divBorder");
objs.style.display="none";
}
function SetDisplay(obj)
{
document.getElementById(obj).style.display="block";
}
</script>
</head>
<body>
<div style="width: 95%; margin-left: auto; margin-right: auto;">
<div class="color-input">
<input name="dataBorder" type="text" id="dataBorder" onclick="SetDisplay('divBorder');" />
<span class="colorhover" style="background-color: #e6e6e6; display:none;" id="viewBorder" onclick="SetDisplay('divBorder');">
</span>
</div>
<div id="divBorder" style="position:absolute;z-index:8888;display: none; margin-left: 10px;" >
<iframe style="position:absolute;z-index:2;width:220px;height:130px;left:expression(this.previousSibling.offsetLeft);top:expression(this.previousSibling.offsetTop);" onmouseover="showmeg()" onmouseout="hidmeg()" scrolling="no" frameborder="no"></iframe>
<script type="text/JavaScript">colortabl('divBorder','dataBorder','viewBorder'); </script>
</div>
</div>
</body>
</html>
池草不成梦 2010-08-14
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zgke 的回复:]
ColorDialog 不行?
[/Quote]

我就是用这个控件,没写出来...太菜了。
zgke 2010-08-14
  • 打赏
  • 举报
回复
ColorDialog 不行?
jrl5365 2010-08-14
  • 打赏
  • 举报
回复
用js来操作
兔子-顾问 2010-08-14
  • 打赏
  • 举报
回复
其他色轮的实现

http://msdn.microsoft.com/en-us/magazine/cc164113.aspx
http://www.codeguru.com/cpp/g-m/bitmap/palettesandcolortables/article.php/c1735
http://www.koders.com/csharp/fid6227A6F88369176FF1A3CDF19B33844D254DB5CC.aspx?s=button
兔子-顾问 2010-08-14
  • 打赏
  • 举报
回复
没法下载,到这里折腾一把试试。 本文由abc2253130贡献 doc文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C#(WINFORM)学习 一、 C#基础 基础 类型和变量 类型和变量 类型 C# 支持两种类型:“值类型”和“引用类型”。值类型包括简单类型(如 char、int 和 float 等)、枚举类型和结构类型。引用类型包括类 (Class)类 型、接口类型、委托类型和数组类型。 变量的类型声明 变量的类型声明 每个变量必须预先声明其类型。如 int a; int b = 100; float j = 4.5; string s1; 用 object 可以表示所有的类型。 预定义类型 下表列出了预定义类型,并说明如何使用。 类型 object 说明 所有其他类型的最终 基类型 字符串类型; 字符串是 Unicode 字符序列 8 位有符号整型 16 位有符号整型 32 位有符号整型 64 位有符号整型 示例 object o = null; 范围 string sbyte short int long string s = "hello"; sbyte val = 12; short val = 12; int val = 12; long val1 = 12; -128 到 127 -32,768 到 32,767 -2,147,483,648 2,147,483,647 -9,223,372,036,854,775,808 到 第1页 C#(WINFORM)学习 long val2 = 34L; 到 9,223,372,036,854,775,807 byte ushort 8 位无符号整型 16 位无符号整型 byte val1 = 12; ushort val1 = 12; uint val1 = 12; uint 32 位无符号整型 uint val2 = 34U; ulong val1 = 12; ulong val2 = 34U; ulong 64 位无符号整型 ulong val3 = 56L; ulong val4 = 78UL; float 单精度浮点型 float val = 1.23F;7 位 double val1 = 1.23; double 双精度浮点型 double val2 = ±5.0 × 10?324 ±1.7 × 10 308 0 到 255 0 到 65,535 0 到 4,294,967,295 0 到 18,446,744,073,709,551,615 ±1.5 × 10?45 ±3.4 × 10 38 到 到 4.56D;15-16 布尔型;bool 值或为 真或为假 字符类型;char 值是 一个 Unicode 字符 精确的小数类型, 具有 28 个有效数字 bool val1 = true; bool val2 = false; char val = 'h'; decimal val = bool char decimal DateTime ±1.0 × 10?28 ±7.9 × 10 28 到 1.23M;28-29 变量转换 简单转换: float f = 100.1234f; 可以用括号转换: short s = (short)f 也可以利用 Convert 方法来转换: string s1; s1=Convert.ToString(a); MessageBox.Show(s1); 常用 Convert 方法有: 第2页 C#(WINFORM)学习 C# Convert.ToBoolean Convert.ToByte Convert.ToChar Convert.ToDateTime Convert.ToDecimal Convert.ToDouble Convert.ToInt16 Convert.ToInt32 Convert.ToInt64 Convert.ToSByte Convert.ToSingle Convert.ToString Convert.ToUInt16 Convert.ToUInt32 Convert.ToUInt64 备注 Math 类 常用科学计算方法: C# Math.Abs Math.Sqrt Math.Ro

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧