前端求助:如何优雅的让 canvas 的原点 (0, 0) 从左下角开始? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
cat

前端求助:如何优雅的让 canvas 的原点 (0, 0) 从左下角开始?

  •  1
     
  •   cat Aug 22, 2023 1393 views
    This topic created in 981 days ago, the information mentioned may be changed or developed.

    众所周知,在网页中 0,0 一般是在页面左上角,向右向下延申(此处暂不考虑 RTL 情况)

    现在要绘制一些图形,甲方给的数据中 0,0 是在左下角,也就是说 Y 轴的起点是在底部

    目前的做法是把所有的 Y 坐标反正为负数,视觉上就反过来了,但后续的许多处理都特别麻烦

    突然想到那些图表组件,例如散点图折线图,它们的 Y 轴起点一般也在底部

    想请教各位大佬,这部分有什么比较优雅的处理方式吗

    感谢!

    4 replies    2023-08-23 17:53:14 +08:00
    cheese
        1
    cheese  
       Aug 22, 2023
    没啥好办法,要么你就劫持原生方法,直接输入甲方的坐标,然后计算成左上角为原点的,再输入 canvas 绘图
    KouShuiYu
        2
    KouShuiYu  
       Aug 22, 2023
    试试 css

    transform: rotateX(180deg);
    Mutoo
        3
    Mutoo  
       Aug 22, 2023
    用 webgl 绘制,它的坐标系统就是 y 向上的。或者在你的 canvas 2d 绘制系统抽象一个摄像机空间,然后所有的绘制操作都通过这个相机做一个坐标系变换。
    6qHc19ohwmC9wDT3
        4
    6qHc19ohwmC9wDT3  
       Aug 23, 2023
    赞同 2 楼的 CSS 方案
    About     Help     Advertise     Blog     API     FAQ     Solana     5441 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 08:34 PVG 16:34 LAX 01:34 JFK 04:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86