最近,我开始研究HTML canvas绘图以及它的视网膜支持。如果没有在- canvas元素上绘制进一步的配置线,则在视网膜显示器上看起来会有些模糊。
我确实知道,视网膜显示器的像素数是原来的四倍,因此默认情况下必须填充某些设备像素(否则图片的大小仅为预期的一半)。
示例:使用和
绘制HTML 。canvaswidth: 50pxheight: 50px
<canvas height="50px" width="50px">
正常屏幕上的浏览器只绘制它(50 * 50像素)。视网膜显示屏上的浏览器接收50x50px的画布,但由于是视网膜,因此50 * 50的设备像素会比预期的要小。因此,浏览器在视网膜上将其绘制为100 * 100像素。
现在,画布上的清晰线条(黑色/白色单个像素线)变得有点模糊,因为浏览器必须填充附近的像素并使用附近的周围环境-有些像素变成灰色。
解决方法:
这段代码应该解决问题:
// Returns: 1 on 'normal' screens, 2 on retina displays
var PIXEL_RATIO = (function () {
var ctx = document.createElement("canvas").getContext("2d"),
dpr = window.devicePixelRatio || 1,
bsr = ctx.webkitBackingStorePixelRatio ||
ctx.mozBackingStorePixelRatio ||
ctx.msBackingStorePixelRatio ||
ctx.oBackingStorePixelRatio ||
ctx.backingStorePixelRatio || 1;
return dpr / bsr;
})();
function makeCanvasHiPPI(canvas) {
canvas.style.width = canvas.width + "px"; …Run Code Online (Sandbox Code Playgroud) 正如标题所述,我想知道具有灵活数组成员的C结构数组如何表现.这是一个例子:
struct vector {
size_t length;
double array[];
};
Run Code Online (Sandbox Code Playgroud)
维基百科的文章说:
sizeof这种结构上的操作符需要给出柔性阵列成员的偏移量.
在我的机器上,这对应于8个字节(sizeof(size_t)).但是,当我执行以下操作时会发生什么:
显然,数组不能保存向量数据v0,因为它只有3*8字节= 24字节宽.我该如何处理这样的情况?
#define LENGTH 10
int main() {
struct vector arr[3];
struct vector *v0 = calloc(1, sizeof(*v0) + LENGTH * sizeof(v0->array[0]));
v0->length = LENGTH;
size_t i;
for (i = 0; i < v0->length; i++) {
v0->array[i] = (double) i;
}
struct vector v1;
struct vector v2;
arr[0] = *v0;
arr[1] = v1;
arr[2] = v2;
for (i = 0; …Run Code Online (Sandbox Code Playgroud) 我刚刚测试malloc了一个巨大的内存请求,但它没有返回NULL。我已经听说过这个,但是 BSD(我在 mac 上)手册页说:
返回值
如果成功,calloc()、malloc()、realloc()、reallocf()和valloc()函数返回一个指向已分配内存的指针。如果有错误,它们返回一个NULL指针并将 errno 设置为ENOMEM。
如何正确且可靠地检查返回的指针是否指向请求大小的有效块?
编辑:我刚看到这篇文章。我猜 BSD 也一样?
编辑2:代码:
typedef struct {
uint8_t red;
uint8_t green;
uint8_t blue;
} RGB_TYPE;
int main() {
RGB_TYPE *field = malloc(50000 * 50000 * sizeof(RGB_TYPE));
if (!field)
return -1;
... write to field (SEG_FAULT) ...
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有这样的设置:
<div id="wrapper">
<div id="inner_01"></div>
<div id="inner_02"></div>
<div id="inner_03"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我想构建一个具有以下属性的转换:
inner_01了background-color的inner_02和inner_03应该改变.inner_02了background-color的inner_01和inner_03应该改变.inner_03了background-color的inner_01和inner_02应该改变.这是我目前的做法:
将鼠标悬停在inner_01:
#wrapper #inner_01:hover ~ #inner_02 {
/* Transition *
transition: background 5s;
/* Color */
background: #ffee00;
}
/* Don't know how to effect inner_03 */
Run Code Online (Sandbox Code Playgroud)将鼠标悬停在inner_02:
#wrapper #inner_02:hover ~ #inner_03 {
/* Transition *
transition: background …Run Code Online (Sandbox Code Playgroud)我想在HTML和CSS的同一行中左对齐一些文本并将另一个文本居中.我还想要一个margin-left左对齐文本.
这是我目前的做法:
HTML:
<div id="wrapper">
<h1 class="align-left">LEFT</h1>
<h1>CENTER</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.align-left {
float: left;
margin-left: 20px;
}
#wrapper {
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
这适用于左对齐和右对齐,但边距也会推动居中文本.我认为这是因为float: left在页面流中保留左对齐文本.
非常感谢你:)
在 CSS 中,允许写这样的东西。
#div-with-border {
width: 100%; // scales with parent wrapper
height: 30%; // scales with parent wrapper
border: 1px solid black;
border-radius: 10%;
}
Run Code Online (Sandbox Code Playgroud)
如果#div-width-border不是完美的正方形,则边框不会是圆形,因为这意味着 10% 的宽度和 10% 的高度用于边框半径(不同)。我想得到完美的圆圈......我不能使用px,因为边界半径取决于高度/宽度。
我确信#div-width-border元素的宽度总是大于高度。我需要一个大小的边界半径100% of element height来获得一个完美的圆,但100%不会这样做,因为它将使用元素宽度作为半径计算的一部分。
html ×4
css ×3
c ×2
css3 ×2
arrays ×1
canvas ×1
html5 ×1
javascript ×1
malloc ×1
memory ×1
percentage ×1
struct ×1
text-align ×1