나는 총 n00b 이며 모양, 색상 및 텍스트를 렌더링 HTML5
하기 canvas
위해 작업하고 있습니다. 내 앱 에는 캔버스를 동적으로 만들고 콘텐츠로 채우는 뷰 어댑터 가 있습니다. 내 텍스트가 매우 흐릿하거나 흐릿하게 렌더링된다는 점을 제외하면 정말 잘 작동합니다. 너비 와 높이 를 정의 CSS
하면이 문제가 발생 하는 이유에 대한 다른 게시물을 많이 보았지만 모두 javascript
.
관련 코드 ( Fiddle 보기 ) :
var width = 500;//FIXME:size.w;
var height = 500;//FIXME:size.h;
var canvas = document.createElement("canvas");
//canvas.className="singleUserCanvas";
canvas.width=width;
canvas.height=height;
canvas.border = "3px solid #999999";
canvas.bgcolor = "#999999";
canvas.margin = "(0, 2%, 0, 2%)";
var context = canvas.getContext("2d");
//////////////////
//// SHAPES ////
//////////////////
var left = 0;
//draw zone 1 rect
context.fillStyle = "#8bacbe";
context.fillRect(0, (canvas.height*5/6)+1, canvas.width*1.5/8.5, canvas.height*1/6);
left = left + canvas.width*1.5/8.5;
//draw zone 2 rect
context.fillStyle = "#ffe381";
context.fillRect(left+1, (canvas.height*5/6)+1, canvas.width*2.75/8.5, canvas.height*1/6);
left = left + canvas.width*2.75/8.5 + 1;
//draw zone 3 rect
context.fillStyle = "#fbbd36";
context.fillRect(left+1, (canvas.height*5/6)+1, canvas.width*1.25/8.5, canvas.height*1/6);
left = left + canvas.width*1.25/8.5;
//draw target zone rect
context.fillStyle = "#004880";
context.fillRect(left+1, (canvas.height*5/6)+1, canvas.width*0.25/8.5, canvas.height*1/6);
left = left + canvas.width*0.25/8.5;
//draw zone 4 rect
context.fillStyle = "#f8961d";
context.fillRect(left+1, (canvas.height*5/6)+1, canvas.width*1.25/8.5, canvas.height*1/6);
left = left + canvas.width*1.25/8.5 + 1;
//draw zone 5 rect
context.fillStyle = "#8a1002";
context.fillRect(left+1, (canvas.height*5/6)+1, canvas.width-left, canvas.height*1/6);
////////////////
//// TEXT ////
////////////////
//user name
context.fillStyle = "black";
context.font = "bold 18px sans-serif";
context.textAlign = 'right';
context.fillText("User Name", canvas.width, canvas.height*.05);
//AT:
context.font = "bold 12px sans-serif";
context.fillText("AT: 140", canvas.width, canvas.height*.1);
//AB:
context.fillText("AB: 94", canvas.width, canvas.height*.15);
//this part is done after the callback from the view adapter, but is relevant here to add the view back into the layout.
var parent = document.getElementById("layout-content");
parent.appendChild(canvas);
<div id="layout-content"></div>
내가보고있는 결과 ( Safari에서 )는 Fiddle에 표시된 것보다 훨씬 더 왜곡되어 있습니다.
나의 것
깡깡이
내가 뭘 잘못하고 있니? 각 텍스트 요소에 대해 별도의 캔버스가 필요합니까? 글꼴인가요? 먼저 HTML5 레이아웃에서 캔버스를 정의해야합니까? 오타가 있습니까? 나는 길을 잃었다.
clearRect
.