final public void drawU(UGraphic ug) {
		final StringBounder stringBounder = ug.getStringBounder();

		final UPolygon polygon = getPolygonNormal(stringBounder);
		if (withShadow) {
			polygon.setDeltaShadow(4);
		}
		ug = ug.apply(new UChangeBackColor(noteBackgroundColor)).apply(new UChangeColor(borderColor));
		ug.draw(polygon);

		final UShape polygonOpale;
		if (strategy == Direction.LEFT) {
			polygonOpale = getPolygonLeft(stringBounder, pp1, pp2);
		} else if (strategy == Direction.RIGHT) {
			polygonOpale = getPolygonRight(stringBounder, pp1, pp2);
		} else if (strategy == Direction.UP) {
			polygonOpale = getPolygonUp(stringBounder, pp1, pp2);
		} else if (strategy == Direction.DOWN) {
			polygonOpale = getPolygonDown(stringBounder, pp1, pp2);
		} else {
			throw new IllegalArgumentException();
		}

		ug.draw(polygonOpale);

		ug.apply(new UTranslate(getWidth(stringBounder) - cornersize, 0)).draw(new ULine(0, cornersize));
		ug.apply(new UTranslate(getWidth(stringBounder), cornersize)).draw(new ULine(-cornersize, 0));
		textBlock.drawU(ug.apply(new UTranslate(marginX1, marginY)));
	}