- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the help center为指导。
9年前关闭。
我想学习图形编程,我想使用Skia作为库。
我如何在 Ubuntu 上开始使用它?
最佳答案
使用 r1236 版本。较新版本的skia 在Linux 上存在问题。
svn checkout http://skia.googlecode.com/svn/trunk -r1236
// New URL: svn checkout http://skia.googlecode.com/svn/trunk_no_commit -r1236
cd trunk
src/ports/SkFontHost_linux.cpp
./gyp/gyp_skia
make
#include "SkCanvas.h"
#include "SkGraphics.h"
#include "SkImageEncoder.h"
#include "SkString.h"
#include "SkTemplates.h"
#include "SkTypeface.h"
// g++ main.cpp -Wl,-rpath,./ -L. -lskia -Iinclude/core -Iinclude/config -Iinclude/images -lpthread -lfreetype -lpng -o main
int main (int argc, char * const argv[]) {
//
SkAutoGraphics ag;
//Output filename
SkString path("skhello.png");
//Set Text To Draw
SkString text("Hydra v0.0.1a");
SkPaint paint;
//Set Text ARGB Color
paint.setARGB(255, 255, 255, 255);
//Turn AntiAliasing On
paint.setAntiAlias(true);
paint.setLCDRenderText(true);
paint.setTypeface(SkTypeface::CreateFromName("sans-serif", SkTypeface::kNormal));
//Set Text Size
paint.setTextSize(SkIntToScalar(40));
//Set Image Width & Height
int width = 500;
int height = 600;
SkBitmap bitmap;
bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
bitmap.allocPixels();
//Create Canvas
SkCanvas canvas(bitmap);
canvas.drawARGB(255, 25, 25, 25);
//Text X, Y Position Varibles
int x = 80;
int y = 60;
canvas.drawText(text.c_str(), text.size(), x, y, paint);
//Set Style and Stroke Width
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(3);
//Draw A Rectangle
SkRect rect;
paint.setARGB(255, 255, 255, 255);
//Left, Top, Right, Bottom
rect.set(50, 100, 200, 200);
canvas.drawRoundRect(rect, 20, 20, paint);
canvas.drawOval(rect, paint);
//Draw A Line
canvas.drawLine(10, 300, 300, 300, paint);
//Draw Circle (X, Y, Size, Paint)
canvas.drawCircle(100, 400, 50, paint);
//Same Image (file, bitmap, image_type, quality)
SkImageEncoder::EncodeFile(path.c_str(), bitmap, SkImageEncoder::kPNG_Type, 0);
return 0;
}
#include <SFML/Graphics.hpp>
#include "SkCanvas.h"
#include "SkGraphics.h"
#include "SkImageEncoder.h"
#include "SkString.h"
#include "SkTemplates.h"
#include "SkTypeface.h"
#include <iostream>
// g++ main.cpp -Wl,-rpath,./ -L. -lskia -Iinclude/core -Iinclude/config -Iinclude/images -lpthread -lfreetype -lpng -lsfml-window -lsfml-graphics -lsfml-system
using namespace std;
int main(int argc, char **argv) {
int width = 800;
int height = 600;
// Create the main window
sf::RenderWindow window(sf::VideoMode(width, height), "SFML window");
sf::Image image;
SkAutoGraphics ag;
//Set Text To Draw
SkString text("Hydra Skia v0.0.1a");
SkPaint paint;
//Set Text ARGB Color
paint.setARGB(255, 255, 255, 255);
//Turn AntiAliasing On
paint.setAntiAlias(true);
paint.setLCDRenderText(true);
paint.setTypeface(SkTypeface::CreateFromName("sans-serif", SkTypeface::kNormal));
//Set Text Size
paint.setTextSize(SkIntToScalar(20));
SkBitmap bitmap;
bitmap.setConfig(SkBitmap::kARGB_8888_Config, width / 2, height);
bitmap.allocPixels();
//Create Canvas
SkCanvas canvas(bitmap);
canvas.drawARGB(100, 25, 25, 25);
//Text X, Y Position Varibles
int x = 80;
int y = 60;
canvas.drawText(text.c_str(), text.size(), x, y, paint);
//Set Style and Stroke Width
paint.setStyle(SkPaint::kStroke_Style);
paint.setStrokeWidth(3);
//Draw A Rectangle
SkRect rect;
paint.setARGB(255, 0, 0, 0);
//Left, Top, Right, Bottom
rect.set(50, 100, 200, 200);
canvas.drawRoundRect(rect, 20, 20, paint);
canvas.drawOval(rect, paint);
//Draw A Line
canvas.drawLine(10, 300, 300, 300, paint);
//Draw Circle (X, Y, Size, Paint)
canvas.drawCircle(100, 400, 50, paint);
image.Create(bitmap.width(), bitmap.height(), reinterpret_cast<const sf::Uint8*>(bitmap.getPixels()));
// Load a sprite to display
sf::Texture texture;
if (!texture.LoadFromImage(image))
return EXIT_FAILURE;
sf::Sprite sprite(texture);
//sprite.SetPosition(100, 100);
//sprite.Resize(400, 400);
// Load a sprite to display
sf::Texture tex;
if (!tex.LoadFromFile("background.jpg"))
return EXIT_FAILURE;
sf::Sprite texs(tex);
// Start the game loop
while (window.IsOpened())
{
// Process events
sf::Event event;
while (window.PollEvent(event))
{
// Close window : exit
if (event.Type == sf::Event::Closed)
window.Close();
}
// Clear screen
window.Clear();
window.Draw(texs);
window.Draw(sprite);
// Update the window
window.Display();
}
return EXIT_SUCCESS;
}
关于skia - 想在 Ubuntu 上使用 Skia 学习图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6639640/
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
我正在 Windows 上构建 Skia,关注 this link . 对于 Windows x64,构建非常顺利。但不适用于 32 位。 1) 我尝试指定 target_cpu = "x86"而不是
我在使用 skia measureText() 函数测量文本时遇到问题。返回值不准确。 SkPaint *skPaint = new SkPaint(); SkTypeface* myFont = S
我有一个 draw(SkCanvas* canvas) 函数。 在 main() 中我写: SkBitmap myBitmap; myBitmap.allocN32Pixels(640, 480);
我正在尝试打开 JPEG 图像的远程流并将其转换为位图对象: BitmapFactory.decodeStream( new URL("http://some.url.to/source/im
你好, 我目前正在研究Android如何解码和图像文件。当我检查代码时,它似乎在调用 SKIA 库。但是,如何根据源码知道android/skia支持的图片文件格式是什么? 我不是编程专家,所以我还在
本页http://source.android.com/devices/graphics.html说: Prior to Android 3.0, Canvas used the Skia 2D dr
我尝试按照 https://skia.org/user/build 中的建议在 Windows 上编译skia 1> bin/gn gen out/Static --args='is_official
我想弄清楚如何让 Skia 从路径几何中生成网格。我查了 SkPath::dump , SkPath::writeToMemory , SkPath::serialize ,但是它们似乎都输出路径内容
我正在尝试使用 Xamarin.forms 中的 SkiaSharp 在图像上绘制一些多边形。图片是从服务器下载的,然后缓存在后台。所以我宁愿不操纵图像本身,而是绘制一个新 Canvas 并将其放置在
我正在尝试使用 Skia Windows 上的图形库需要 building it from source .但是,当我运行构建命令时: ninja -C out/Static 我得到这个构建错误: "
我正在尝试使用 Linux 构建 SKIA 库: https://code.google.com/p/skia/ 我已成功运行 ./gyp_skia 后跟 make 命令。 您经常在make 之后运行
我正在处理一个必须在位图上快速绘制文本的应用程序。我已经对渲染过程的内存使用进行了相当多的优化,但我仍然希望该过程尽可能快,那时我了解到 Skia 库,有人说它可以提供比原生 Android canv
我将 Skia 用于我的示例程序之一。我有一个 Canvas ,我在其中使用 font_size 30 编写文本,这是代码片段。 string = "Test String"; SkString t
这是我的一个与远程浏览器隔离相关的实验项目。我正在尝试拦截 Skia在正在运行的 Chromium 实例中绘制命令,然后通过 CanvasKit 在客户端的不同浏览器实例中重放它们,Skia 的 We
因此,我从 Google SIgn-in api 下载个人资料图片,并将其保存到隐藏文件中。问题是,当我尝试检索它时,它会抛出:D/skia: --- 无法创建带有消息“未实现”的图像解码器。但是,当
为什么 Skia包括 Forth interpreter ? 最佳答案 Forth 解释器包含最初是一种调用 Skia 的迷你脚本语言。 迈克·里德,software engineer and man
我想使用 SkiaSharp 绘制富文本,例如 iOS 的属性文本或 Xamarin.Forms 的 FormattedString,但我找不到方法。 我找到了 DrawText 方法,但它用于使用一
已关闭。此问题旨在寻求有关书籍、工具、软件库等的建议。不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以
我正在设计一个显示一些图像的 Activity 。下面的代码获取图像文件并将它们放入屏幕。 for(int i=0;idecode returned false 06-2
我是一名优秀的程序员,十分优秀!