方案/球拍:画布操作

2024-04-03

1)正如标题所述,当我调整窗口大小时,我绘制的对象消失,但矩形保持原样。

2)原点从左上角开始,但我希望它在左下角。

3)除了绘图库之外,我找不到任何缩放功能,所以如果我希望实现这样的功能,一个选项是通过绘制更大的对象并刷新画布来“缩放”?

(define top-frame (new frame%
                         [label "KR"]
                         [width 500]
                         [height 500]))
;Make a frame by instantiating the frame% class

(define image (pict->bitmap (rectangle 50 50)))

(define canvas (new canvas%
                    [parent top-frame]
                    [paint-callback (lambda (canvas dc)
                                      (send dc draw-bitmap image 0 0))]))

(define drawer (send canvas get-dc))

(send top-frame show #t)
; Show the frame by calling its show method

(define (draw-object x)
  (sleep/yield 0.1)
  (case (first x) 
    [("LINE") (send drawer draw-line
                    (second x) (third x)
                    (fourth x) (fifth x))]
    [("CIRCLE") (send drawer draw-bitmap (pict->bitmap (circle (round (fourth x)))) (round (second x)) (round (third x)))]
    [("POINT") (send drawer draw-point (round (second x)) (round (third x)))]
    [else "Not drawing anything!"]))

(draw-object (find-specific-values (third list-of-objects)))
(map draw-object (map find-specific-values list-of-objects))

ad 1) “...当我调整窗口大小时,我绘制的对象会消失,...” 当您调整窗口大小时,系统需要重新绘制窗口的内容。发出重绘事件,最终 Racket GUI 层将调用绘制回调。因此:创建一个函数来完成所有绘图。从绘制回调中调用它。在这里查看类似的问题:https://stackoverflow.com/a/16086594/23567 https://stackoverflow.com/a/16086594/23567

ad 2) 一种选择是在绘图上下文中进行坐标变换。请参阅 dc 文档中的集合转换。是这样的:

(send dc set-transformation 
        (vector (trans->vector t)
                0   0 ; x and y origin
                1  -1 ; x and y scale
                0)))

y 尺度的 -1 将翻转 y 轴。您可能想移动原点。

ad 3) 可以通过更改 x 和 y 比例,然后重新绘制来完成缩放。 您可以尝试将比例调整为 1/2 -1/2 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

方案/球拍:画布操作 的相关文章

  • gen:Racket 类的自定义编写

    我正在寻找规范的方法来指定自定义方法来输出 Racket 对象的字段 换句话说 我正在寻找与 Java 相当的 RackettoString方法 如果存在 我知道对于结构可以使用gen custom write指定write proc功能
  • 如何在方案中编写程序来查找数字列表的因数

    这是单个整数的代码 它如何扩展到函数列表 define factors n define factors d cond gt d n list modulo n d 0 cons d factors d 1 else factors d 1
  • 一个拼接语法类,匹配可选模式并绑定属性

    我的拼接语法类定义如下 语法类匹配两个语句 第一个模式 其中一个语句 第三个和第二个模式 的序列 甚至可能根本不匹配这些语句 最后一个模式 正如您所看到的 有相当多的 重复 代码 因为每个模式要么返回模式中捕获的某些内容的属性 要么返回空的
  • 如何创建一个包含 n 个过程应用程序的列表

    我的问题与this one https stackoverflow com questions 249374 scheme procedure to compute the nth repeated application of a fun
  • 在Scheme中编写一个自动记忆器。有关宏和包装器的帮助

    我在Scheme中编写自动记忆器时遇到了一些问题 我有一个有效的 memoize 函数 它创建一个哈希表并检查该值是否已经计算出来 如果之前已经计算过 则返回值 否则调用该函数 define memoizer fun let a table
  • 方案let语句

    在函数式编程语言scheme中 没有赋值语句 但在一个let陈述 let x 2 x 3 您正在分配2 to x 那么为什么这不违反函数式编程中没有赋值语句的原则呢 Scheme 是一种函数式编程语言 这一说法是不正确的 在Scheme中
  • 将字符串附加到 IronScheme 中的现有文本文件

    我们正在尝试使用 IronScheme 构建一个日志文件 并且我们已经使用racket 为其编写了代码 它在球拍中工作正常 但 IronScheme 会抛出错误 这是我们目前所拥有的 define write to log lambda w
  • 对方案中的列表进行排序

    如何编写一个排序算法 以升序返回列表 ex 1 3 5 2 9 回报 1 2 3 5 9 大多数Scheme 实现都附带一个对列表进行排序的过程 如果您的实现没有提供这一功能 那么为您提供一个并不困难 下面是快速排序算法的实现 gt def
  • letrec、命名let和内部定义的常见用法?

    我有几本关于Scheme的书 其中一些提到了名为let和letrec的书 但没有一本真正给出了令人信服的例子 我的意思是 我何时以及为何使用其中一个而不是另一个 是否存在 letrec named let 确实是比内部定义甚至外部辅助过程更
  • 方案中的延续传递风格?

    我遇到了这段代码在维基百科上 http en wikipedia org wiki Continuation passing style define pyth x y k x x lambda x2 y y lambda y2 x2 y2
  • 为什么我的 Scheme 函数返回错误“应用程序:不是过程”?

    我想获得 a b c 的第二个值 但我不想使用 cadr 我可以得到正确的答案 car cdr a b c b 但是当我构建该函数时 define test lambda list car cdr list test a b c 我收到以下
  • 如何找到 MIT 方案中出现错误的地方?

    当你在 MIT 方案中遇到错误时 它不会告诉你错误发生在哪里 例如 它只打印如下内容 Unbound variable top left To continue call RESTART with an option number REST
  • 传递给过程的列表转换为过程内列表的列表

    我正在 DrRacket 上调试这段代码 lang racket define last element on list lambda l cond null l null cdr l car l else last element on
  • 不知道如何解决 SICP 练习 1.11

    练习1 11 http mitpress mit edu sicp full text book book Z H 11 html thm 1 11 一个功能f由以下规则定义f n n if n lt 3 and f n f n 1 2f
  • 如何在方案中向后打印字符串?

    我知道如果我按照以下方式编写方案代码并输入 单词 a b c 它将以相同的顺序输出列表 您能告诉我是否有一种方法可以以相反的顺序打印出来 例如 列出 c b a 它需要是我以相反顺序打印出来的用户输入 所以 我不能称之为 反向 a b c
  • 创建后缀号码球拍

    我正在尝试在 Racket 中试验我可以做的事情 并且我想在数字后加上字母 对于这个例子 我只想代表10000 as 10K and 1000000 as 1M 有没有办法 用宏或其他方式 我可以扩展1M to 1 1000000 或者有什
  • Scheme/Lisp 嵌套循环和递归

    我正在尝试解决方案中的一个问题 该问题要求我使用嵌套循环或嵌套递归 例如我有两个列表 我必须检查它们的笛卡尔积的条件 解决这些类型问题的最佳方法是什么 有关如何简化这些类型的函数的任何指示吗 I ll elaborate a bit sin
  • Lisp 中的 (定义 (平均 ....))

    我只是在玩scheme lisp 并正在考虑如何纠正我自己的定义average 我不确定如何做一些我认为需要的事情 定义一个接受任意数量参数的过程 计算这些参数 将参数列表传递给 以将它们加在一起 有人有定义的例子吗average 我似乎对
  • 方案中的尾递归幂函数

    我在方案中编写尾递归幂函数时遇到问题 我想使用辅助函数来编写该函数 我知道我需要一个参数来保存累计值 但在那之后我就陷入了困境 我的代码如下 define pow tr a b define pow tr h result if b 0 r
  • 从when语句内的函数返回

    我想做的就是使用 when 语句返回一个值 我想要以下功能 if x return y 我正在尝试使用 when x y 但是when语句并没有以退出函数并返回y的方式进行计算 它只是愉快地继续下一行 有没有办法做到这一点而不需要制作一个看

随机推荐

  • Raphaeljs 在 IE 中将所有文本呈现为斜体

    我在用着拉斐尔 JS http raphaeljs com index html用于直观地表示一些数据 底层技术是 SVG 所以显然在 IE 中并不总是能很好地工作 但是该库在渲染有用的东西方面做得相对不错 尽管它通常看起来很差 无论如何
  • MERGE 语句的语法错误

    我正在尝试在 Go 中执行 MERGE 语句 query MERGE staged ON email 1 WHEN NOT MATCHED THEN INSERT email secret passwd ts newAcct VALUES
  • HTTP 服务的反应式缓存

    我正在使用 RsJS 5 5 0 1 在 Angular 2 中进行缓存 它运行良好 缓存功能的核心是 const observable Observable defer gt actualFn do gt this console log
  • Antlr4中有哪些加速解析的方法?

    我对Antlr4的性能有些怀疑 我目前正在使用 Python 和 Antlr4 与 Java 相比 它非常慢 使用 Antlr4 IntelliJ 插件验证 由于我需要使用更大的代码进行解析 因此我计划切换到 Antlr 最快的语言 例如
  • R中runif和sample的区别?

    他们使用的概率分布是什么 我知道 runif 给出小数 sample 给出整数 但我感兴趣的是 sample 是否也使用 均匀概率分布 考虑以下代码和输出 gt set seed 1 gt round runif 10 1 100 1 27
  • java.util.ConcurrentModificationException - ArrayList

    开始编辑请向下滚动查看更新的代码编辑结束 我已经在谷歌上搜索并搜索了为什么会发生这个异常 我知道它是由一个对象正在读取列表而同时从列表中删除了一个项目引起的 我已经根据我发现的建议更改了我的代码 但时不时我仍然会遇到此异常 并且它使我的应用
  • 整型的 std::isnan 和 std::isinf 重载

    Cppreference 提到了重载std isnan https en cppreference com w cpp numeric math isnan and std isinf https en cppreference com w
  • 使用数字排序合并 pdf 文件

    我正在尝试编写一个 bash 脚本 将目录中的所有 pdf 文件合并到一个 pdf 文件中 命令pdfunite pdf output pdf成功实现了这一点 但它按常规顺序合并输入文档 1 pdf 10 pdf 11 pdf 2 pdf
  • JavaScript KeyCode 值在 Internet Explorer 8 中“未定义”

    我在使用我编写的一些 JavaScript 时遇到问题 但仅限于 Internet Explorer 8 在 Internet Explorer 7 或更早版本或 Mozilla Firefox 3 5 或更早版本上执行此操作没有问题 当我
  • 如何在CoreData中保存多个条目?

    我有以下代码 执行时没有错误 问题是它只保存最后一个条目 Jack Daniels 3 如何更改此设置以便保存所有三个条目 let employees NSEntityDescription insertNewObjectForEntity
  • MS Access 的良好免费替代方案 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android:更改WindowManager添加的View的LayoutParams

    我有叠加层View管理者WindowManager 就像在这个问题 http goo gl OD1ij 简而言之 它看起来像这样 WindowManager wm WindowManager getSystemService WINDOW
  • 在 IIS 7.5 上部署 ASP.NET MVC 应用程序时出现“未配置默认文档”错误

    开发 ASp NET MVC 5 应用程序 在开发计算机 Windows 7 x86 上运行没有问题 当我尝试在 IIS 7 5 Win Server 2008 R2 64 位 上部署它时 出现 3 个错误 无法识别的属性 targetFr
  • codeigniter 中的 is_unique 用于编辑功能

    我有要求 我可以在新的添加函数中对唯一值进行验证 例如 this gt form validation gt set rules email Email required valid email is unique users Email
  • Elasticsearch 多词过滤器

    我对 Elasticsearch 还很陌生 所以这是我的问题 我想用 elasticsearch 进行搜索查询并想用多个术语进行过滤 如果我想搜索用户 tom 那么我希望获得用户 isActive 1 isPrivate 0 和 isOwn
  • JavaScript 绘图库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 对于 JavaScript 交互式绘图库有什么建议吗 只需要绘制不同颜色的线条 多边形 文字即可 兼容
  • 类实例上元类的方法

    我想知道在元类上声明的方法会发生什么情况 我预计 如果您在元类上声明一个方法 它将最终成为一个类方法 但是 行为是不同的 例子 gt gt gt class A object classmethod def foo cls print fo
  • 目前Mono虚拟机的性能如何?

    网络上充斥着不同语言 编译器 虚拟机的各种性能测试 然而 几乎没有任何一个使用真实场景来测试性能 此外 在 Google 上搜索此类基准通常只会产生几年前的基准 因为这些基准有最多的时间来收集它们的链接 你们中有人真正了解不同虚拟机的当前性
  • 使用 antd 在组件中创建子菜单失败

    我正在使用 antd 3 5 4 我有一个包含用户管理项目的菜单 未登录时 菜单有一个带有登录页面链接的菜单项 登录后 菜单有一个子菜单 其中包含多个链接 包括注销 我只是对连接的用户进行简单的测试以显示链接或子菜单 当所有内容都在同一个文
  • 方案/球拍:画布操作

    1 正如标题所述 当我调整窗口大小时 我绘制的对象消失 但矩形保持原样 2 原点从左上角开始 但我希望它在左下角 3 除了绘图库之外 我找不到任何缩放功能 所以如果我希望实现这样的功能 一个选项是通过绘制更大的对象并刷新画布来 缩放 def