🤖Have you ever tried Chat.M5Stack.com before asking??😎
    M5Stack Community
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Register
    • Login

    Cannot canvas.drawString() onto canvas. (M5PaperTouchArea)

    Arduino
    1
    2
    1.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Steve1
      last edited by Steve1

      I have made a small modification to RAWSEQ'sexcellent M5PaperTouchArea project.

      I am trying to use the spare white area as an output canvas. I can place the CanvasOP (output canvas) correctly and I can check it is really there by filling it in different shades and moving it around. but I cannot write into it. Any canvasOP.drawString() commands seem to be ignored. I have tried changing the text color, size and position but I cannot seem to get text to show up on the pushed canvasOP.

      #include <M5EPD.h>
      #include "M5PaperTouchArea.h"
      #include "MPlusFontsSubset.h"
      
      // M5EPD Canvas
      M5EPD_Canvas canvas(&M5.EPD);
      M5EPD_Canvas canvasOP(&M5.EPD);
      
      // Module (Grid & TouchArea)
      M5PaperTouchAreas _m5pta;
      
      // Module (Grid Only)
      GridUtil _gu;
      
      void setup() {
      
        // Display Setup
        M5.begin();
        M5.EPD.SetRotation(90);
        M5.TP.SetRotation(90);
        M5.EPD.Clear(true);
        canvas.loadFont(MPlusFontsSubset, sizeof(MPlusFontsSubset));
        canvas.createCanvas(540, 960);
        canvas.createRender(48, 256);
        canvas.fillRect(0, 0, 540, 960, 10);
        _m5pta.current_canvas = &canvas;
        _m5pta.getGutil()->setVertical(true);
        _gu.setVertical(true);
      
        // Event Setting
        _m5pta.e_touch.func = bTouch;
        _m5pta.e_release.func = bRelease;
      
        // Change Default Setting
        _m5pta.default_font_size = 48;
        _m5pta.default_radius = 15;
        _m5pta.default_font_linepos = 6;
        _m5pta.default_bc = { 13, 0, 0 };
      
        // Touch Area Test
        _m5pta.add_grid(1, 1, 1, 1, "B1", "b1");
        _m5pta.add_grid(2, 1, 1, 1, "B2", "b2");
        _m5pta.add_grid(3, 1, 1, 1, "B3", "b3");
        _m5pta.add_grid(4, 1, 1, 1, "B4", "b4");
        _m5pta.add_grid(5, 1, 1, 1, "B5", "b5");
        _m5pta.add_grid(1, 2, 3, 1, "B6", "b6");
        _m5pta.add_grid(4, 2, 2, 1, "B7", "b7");
        _m5pta.add_grid(1, 3, 2, 1, "B8", "b8");
        _m5pta.add_grid(3, 3, 3, 1, "B9", "b9");
        _m5pta.add_grid(1, 4, 5, 1, "B10 Steve", "Steve");
        _m5pta.add_grid(1, 5, 2, 1, "B11", "b11");
        //_m5pta.add_grid(3, 5, 3, 2, "B16", "b16");//added by steve
        _m5pta.add_grid(1, 6, 2, 2, "B12", "b12");
        _m5pta.add_grid(3, 7, 3, 3, "B13", "b13");
        _m5pta.add_grid(1, 8, 2, 1, "B14", "b14");
        _m5pta.add_grid(1, 9, 2, 1, "B15", "b15");
        _m5pta.draw();
      
        // Grid Draw Test
       // GURect g = _gu.convert(3, 5, 3, 2);
      //  canvas.setTextColor(10);
       // canvas.fillRect(g.x, g.y, g.w, g.h, 0);
        canvas.pushCanvas(0, 0, UPDATE_MODE_GC16);
       /*  Serial.print(g.x);
        Serial.print("...");
        Serial.print(g.y);
          Serial.print("...");
        Serial.print(g.w);  
        Serial.print("...");
        Serial.print(g.h);*/
        //230...440...290...180 g.cordinates
        canvasOP.createCanvas(290, 180);
        //canvasOP.fillCanvas(5);
        canvasOP.setTextSize(4);
        canvasOP.setTextColor(15);
        canvasOP.drawString("Hello", 20, 100);
        canvasOP.pushCanvas(230, 440, UPDATE_MODE_GC16);
      }
      
      // Touch Event
      void bTouch(M5PTAEventContext& ct) {
        Serial.println("T:" + ct.code);
      
      }
      
      // Release Event
      void bRelease(M5PTAEventContext& ct) {
        Serial.println("R:" + ct.code);
      
      }
      
      void loop() {
        _m5pta.loop();
      }
      
      
      1 Reply Last reply Reply Quote 0
      • S
        Steve1
        last edited by Steve1

        I am just starting out with the M5Paper and a lot of things are taking some getting use to. I thought about deleting this thread when I found out how easy the solution was but then I thought that maybe this will help someone else. So here is the solution:

        You have to declare a font for use in the canvasOP. So adding his line after creating canvasOP fixes the problem:
        canvasOP.setFreeFont(&FreeSerif24pt7b);

        1 Reply Last reply Reply Quote 0
        • First post
          Last post