<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>南芝 - 我才12岁（飞鸟尽，良弓藏，2011，背包去旅行！） &#187; canvas</title>
	<atom:link href="http://www.12sui.cn/tag/canvas/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.12sui.cn</link>
	<description>南芝的前端技术学习经验</description>
	<lastBuildDate>Sun, 08 Jan 2012 09:22:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Opera Widget:Gorgeous Ruler 2.0</title>
		<link>http://www.12sui.cn/develop/opera-widgetgorgeous-ruler-2-0/</link>
		<comments>http://www.12sui.cn/develop/opera-widgetgorgeous-ruler-2-0/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 12:25:14 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[编码]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[ruler]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=584</guid>
		<description><![CDATA[Ruler版本升级至2.0版本，主要改进的就是背景的问题。在1.0版本里使用的一个透明的背景图片，再加上用户输入的一个背景色来控制背景的显示，这个局限性比较大，为了让用户可以更好的自定义皮肤，所以这里做了重点改进，其实功能上没什么问题，主要就是使用上的改进。 2.0改进的一些地方及功能： 背景使用canvas绘制，支持用户自定义渐变，包括开始颜色、透明度、结束颜色、透明度以及渐变的长度； 左侧/上侧使用圆角展示； 改变方向时，以操作的几个icon为圆心，仅尺子动，而操作按钮不跟随跳动； 最大最小化使用动画； 最小化后，不在初始化尺子位置，亦不再更换图片，仅将最小化icon和最大化icon做替换； 当鼠标移至边缘时，刻度始终显示在尺子内，避免显示在外侧被遮挡； JS、CSS文件做了优化； 更换了icon图标； 下载安装：http://widgets.opera.com/widget/14151/2.0/ 源码下载：http://code.google.com/p/gorgeous-ruler/downloads/list 小结： 在用canvas去绘制背景的时候，纠结了一点，就是在尺子进行旋转的时候，采用什么方式？最初想着是是使用drawImage的rotate进行旋转，不过后来发现这个东东存在一些缺陷，而且感觉其实效率并不是很高，而本身这个canvas仅仅是绘制了一个圆弧和一个方框，我完全可以直接重绘，性能并不差，而且省去了诸多麻烦，最终还是选择了重绘。]]></description>
			<content:encoded><![CDATA[<p>Ruler版本升级至2.0版本，主要改进的就是背景的问题。在1.0版本里使用的一个透明的背景图片，再加上用户输入的一个背景色来控制背景的显示，这个局限性比较大，为了让用户可以更好的自定义皮肤，所以这里做了重点改进，其实功能上没什么问题，主要就是使用上的改进。</p>

<p><strong>2.0改进的一些地方及功能：</strong></p>

<ol>
<li>背景使用canvas绘制，支持用户自定义渐变，包括开始颜色、透明度、结束颜色、透明度以及渐变的长度；</li>
<li>左侧/上侧使用圆角展示；</li>
<li>改变方向时，以操作的几个icon为圆心，仅尺子动，而操作按钮不跟随跳动；</li>
<li>最大最小化使用动画；</li>
<li>最小化后，不在初始化尺子位置，亦不再更换图片，仅将最小化icon和最大化icon做替换；</li>
<li>当鼠标移至边缘时，刻度始终显示在尺子内，避免显示在外侧被遮挡；</li>
<li>JS、CSS文件做了优化；</li>
<li>更换了icon图标；</li>
</ol>

<p>下载安装：<a href="http://widgets.opera.com/widget/14151/2.0/">http://widgets.opera.com/widget/14151/2.0/</a></p>

<p><a href="http://www.12sui.cn/wp-content/uploads/2009/11/screenshot.png"><img src="http://www.12sui.cn/wp-content/uploads/2009/11/screenshot.png" alt="Gorgeous Ruler 2.0" title="Gorgeous Ruler 2.0" width="360" height="240" class="size-full wp-image-585" /></a></p>

<p>源码下载：<a href="http://code.google.com/p/gorgeous-ruler/downloads/list">http://code.google.com/p/gorgeous-ruler/downloads/list</a></p>

<p><strong>小结：</strong></p>

<p>在用canvas去绘制背景的时候，纠结了一点，就是在尺子进行旋转的时候，采用什么方式？最初想着是是使用drawImage的rotate进行旋转，不过后来发现这个东东存在一些缺陷，而且感觉其实效率并不是很高，而本身这个canvas仅仅是绘制了一个圆弧和一个方框，我完全可以直接重绘，性能并不差，而且省去了诸多麻烦，最终还是选择了重绘。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/develop/opera-widgetgorgeous-ruler-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将颜色值转换到RGB值</title>
		<link>http://www.12sui.cn/develop/translate-color-to-rgb/</link>
		<comments>http://www.12sui.cn/develop/translate-color-to-rgb/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 13:06:09 +0000</pubDate>
		<dc:creator>南芝</dc:creator>
				<category><![CDATA[编码]]></category>
		<category><![CDATA[canvas]]></category>
		<category><![CDATA[RGB]]></category>

		<guid isPermaLink="false">http://www.12sui.cn/?p=575</guid>
		<description><![CDATA[在做一个小widget时，用canvas去创建一个渐变，我又想设置其透明度，那么我就需要获取到颜色的rgba值，但是没办法去控制每一个用户正确的输入rgb值，那太困难了，相信没几个人能准确的记得住rgb值，所以，只能我这边做下转换了，本来只是Opera用，扩展了下，让目前的各个浏览器都能正常使用，当然不是统一的方法，而是根据各自的优势去处理的。Firefox、Safari、Chrome浏览器表现的最优秀，直接就给我了我想要的，Opera只能给我十六进制值，而IE更差劲，要啥没啥，杯具啊！ JS Code： /** * translate color value to rgb * @method toRGB * @param {String} color value */ function toRGB(color) { //如果输入的为rgb值直接返回 if(color.indexOf(',') != -1) { return color; } if(!window.getComputedStyle) { //ie if(color.indexOf('#') != -1) { //十六进制 var ncolor = color.length == 4 ? ('#' + color.charAt(1) + color.charAt(1) + color.charAt(2) + color.charAt(2) + [...]]]></description>
			<content:encoded><![CDATA[<p>在做一个小widget时，用canvas去创建一个渐变，我又想设置其透明度，那么我就需要获取到颜色的rgba值，但是没办法去控制每一个用户正确的输入rgb值，那太困难了，相信没几个人能准确的记得住rgb值，所以，只能我这边做下转换了，本来只是Opera用，扩展了下，让目前的各个浏览器都能正常使用，当然不是统一的方法，而是根据各自的优势去处理的。Firefox、Safari、Chrome浏览器表现的最优秀，直接就给我了我想要的，Opera只能给我十六进制值，而IE更差劲，要啥没啥，杯具啊！</p>

<p>JS Code：</p>

<p><pre>
/**
 * translate color value to rgb
 * @method toRGB
 * @param {String} color value
 */
function toRGB(color) {
    //如果输入的为rgb值直接返回
    if(color.indexOf(',') != -1) {
        return color;
    }
    if(!window.getComputedStyle) {
        //ie
        if(color.indexOf('#') != -1) {
            //十六进制
            var ncolor = color.length == 4 ? ('#' + color.charAt(1) + color.charAt(1) + color.charAt(2) + color.charAt(2) + color.charAt(3) + color.charAt(3)) : color;
        } else {
            //英文名称
            var enames = {'aqua':'rgb(0, 255, 255)','black':'rgb(0, 0, 0)','blue':'rgb(0, 0, 255)','fuchsia':'rgb(255, 0, 255)','gray':'rgb(128, 128, 128)','green':'rgb(0, 128, 0)','lime':'rgb(0, 255, 0)','maroon':'rgb(128, 0, 0)','navy':'rgb(0, 0, 128)','olive':'rgb(128, 128, 0)','orange':'rgb(255, 165, 0)','purple':'rgb(128, 0, 128)','red':'rgb(255, 0, 0)','silver':'rgb(192, 192, 192)','teal':'rgb(0, 128, 128)','white':'rgb(255, 255, 255)','yellow':'rgb(255, 255, 0)'};
            return enames[color];
        }
    } else {
        //创建临时节点
        var span = document.createElement('span');
        span.style.color = color;
        document.body.appendChild(span);
        var ncolor = window.getComputedStyle(span,null).getPropertyValue('color');
        document.body.removeChild(span);
        if(!window.opera) {
            //Firefox,Safari,Chrome
            return ncolor;
        }
    }
    //ie || Opera
    var to2 = parseInt(('0x' + ncolor.slice(1)),16);
    var r = to2 >> 16,
        g = parseInt('0000000000000000' + (to2 >> 8).toString(2).slice(-8),2),
                      //g = (to2 &amp; 0x00ff00) >> 8,
        b = parseInt('0000000000000000' + to2.toString(2).slice(-8),2);
                      //b = to2 &amp; 0x0000ff;
    return 'rgb(' + r + ',' + g + ',' + b + ')';
}
</pre></p>

<p>Demo：<a href="http://www.12sui.cn/test/rgb-0911.html">http://www.12sui.cn/test/rgb-0911.html</a></p>

<p style="color:red">注：有一点比较散的是，Safari、Chrome、Opera、IE创建临时节点后，必须插入到文档里才能获取到style值，只有Firefox不需要这么做，好散。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.12sui.cn/develop/translate-color-to-rgb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

