{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Patterns\n", "\n", "## Create pattern from an Image object" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from ipycanvas import Canvas\n", "from ipywidgets import Image" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### The pattern source is a small image that will get repeated on the Canvas" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "Image.from_file(\"pattern.png\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "canvas = Canvas()\n", "pattern = canvas.create_pattern(Image.from_file(\"pattern.png\"))\n", "canvas.fill_style = pattern\n", "canvas.fill_rect(0, 0, canvas.width, canvas.height)\n", "canvas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create pattern from another Canvas" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from math import pi\n", "\n", "from ipycanvas import Canvas" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pattern_source = Canvas(width=50, height=50)\n", "\n", "pattern_source.fill_style = \"#fec\"\n", "pattern_source.fill_rect(0, 0, 50, 50)\n", "pattern_source.stroke_arc(0, 0, 50, 0, 0.5 * pi)\n", "\n", "pattern_source" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "canvas2 = Canvas()\n", "pattern1 = canvas2.create_pattern(pattern_source)\n", "canvas2.fill_style = pattern1\n", "canvas2.fill_rect(0, 0, canvas2.width, canvas2.height)\n", "canvas2" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pattern_source = Canvas(width=50, height=50)\n", "\n", "pattern_source.fill_style = \"#338ac4\"\n", "pattern_source.fill_rect(0, 0, 50, 50)\n", "\n", "pattern_source.fill_style = \"#3341c4\"\n", "pattern_source.fill_circle(50, 50, 5)\n", "pattern_source.fill_circle(0, 0, 5)\n", "pattern_source.fill_circle(50, 0, 5)\n", "pattern_source.fill_circle(0, 50, 5)\n", "\n", "pattern_source.fill_style = \"#33c4b5\"\n", "pattern_source.fill_circle(25, 25, 10)\n", "pattern_source" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "canvas = Canvas()\n", "pattern2 = canvas.create_pattern(pattern_source)\n", "canvas.fill_style = pattern2\n", "canvas.fill_rect(0, 0, canvas.width, canvas.height)\n", "canvas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### You can even combine patterns" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "canvas = Canvas()\n", "\n", "canvas.fill_style = pattern1\n", "canvas.fill_rect(0, 0, canvas.width, canvas.height)\n", "\n", "canvas.fill_style = pattern2\n", "canvas.fill_circle(canvas.width / 2.0, canvas.height / 2.0, 100)\n", "\n", "canvas" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" } }, "nbformat": 4, "nbformat_minor": 4 }