首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Java AWT 图形界面编程】使用鼠标滚轮缩放 Canvas 画布中绘制的背景图像 ( 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

一、鼠标滚轮缩放的中心点设置为当前鼠标中心点 - 要点分析 ---- 鼠标指针指向界面中的 Canvas 画布某个位置 , Canvas 画布中绘制着一张超大图片 , 以该位置为中心 , 滑动鼠标滚轮时进行缩放...) * scale; // 缩放后的图像宽度 double imageHeight = image.getHeight(null) * scale; // 缩放后的图像高度 有了鼠标指针在图片中的位置...在鼠标滚轮缩放完成后 , 再根据鼠标指针指向的位置和比例 , 结合图片缩放后的尺寸 , 重新计算画布偏移的位置 , 以达到鼠标指向的图片元素位置基本保持不变的目的 ; /** * 计算新的比例...) * scale; // 缩放后的图像宽度 double imageHeight = image.getHeight(null) * scale; // 缩放后的图像高度...= (int) (pointer_y - canvasY); } 二、绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 1、代码示例 import

2.8K10

【Java AWT 图形界面编程】使用小键盘按键缩放 Canvas 画布中绘制的背景图像 ( 键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 )

} }); 二、键盘按键监听 + 绘制超大图像 + 鼠标拖动 + 鼠标滚轮缩放 + 以当前鼠标指针位置为缩放中心 示例 ---- 在 【Java AWT 图形界面编程】Canvas 中绘制超大图片...( 使用鼠标拖动查看全图 | 设置 JFrame 窗口自动关闭 | 获取并绘制图片 | 鼠标拖动计算位移 | 画布偏移 ) 博客中 , 绘制了超大图像 , 可以使用鼠标拖动 ; 在 【Java AWT..., 如 缩小画布后 , 移动鼠标 , 移动距离对应的缩放效果也随之缩小 ; 在 【Java AWT 图形界面编程】使用鼠标滚轮放大缩小 Canvas 画布中绘制的背景图像 ( 鼠标滚轮事件监听器 MouseWheelListener...| Canvas 中绘制图像并设置图像大小 ) 博客中 , 使用缩放背景图像的方式 , 实现缩放效果 , 并同时福袋鼠标指针拖拽效果 ; 本博客中实现的案例 , 在上面的基础上 , 添加了鼠标滚轮缩放的中心点设置为当前鼠标中心点...) * scale; // 缩放后的图像宽度 double imageHeight = image.getHeight(null) * scale; // 缩放后的图像高度

1.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    「Adobe国际认证」Adobe Photoshop,如何裁剪并拉直照片?

    在您裁剪或拉直照片时,实时反馈可帮助您以可视的方式呈现最终结果。 裁剪照片 1.在工具栏中,选择裁剪工具 。裁剪边界显示在照片的边缘上。...裁剪边界显示在照片的边缘上。 2.在选项栏中,选择“内容识别”。默认的裁剪矩形会扩大,以包含整个图像。 3.使用图像周围的手柄,拉直或旋转图像。或者,将画布的范围扩展到图像原始大小之外。...使用裁剪工具调整画布大小 您可以使用裁剪工具调整图像画布的大小。 在工具栏中,选择裁剪工具 。裁剪边界显示在图像的边缘上。 向外拖动裁剪句柄以放大画布。使用 Alt/选项修改键从各个方向进行放大。...增大画布的大小会在现有图像周围添加空间。减小图像的画布大小会裁剪到图像中。如果增大带有透明背景的图像的画布大小,则添加的画布是透明的。如果图像没有透明背景,则添加的画布的颜色将由几个选项决定。...选择“相对”,然后输入要从图像的当前画布大小添加或减去的数量。输入一个正数将为画布添加一部分,而输入一个负数将从画布中减去一部分。 3.对于“定位”,单击某个方块以指示现有图像在新画布上的位置。

    2.9K10

    「Adobe国际认证」Adobe Photoshop调整裁剪、旋转和画布大小

    (如有必要,则单击并按住吸管工具来显示标尺。) 在图像中,拖动关键的水平元素或垂直元素。 在选项栏中,单击“拉直”。Photoshop 可拉直图像并可以自动对其进行裁剪。...(在 Photoshop 中,可以选择“顺时针”或“逆时针”以顺时针或逆时针方向旋转。) 然后单击“确定”。 水平或垂直翻转画布沿着相应的轴翻转图像。 更改画布大小 画布大小是图像的完全可编辑区域。...“画布大小”命令可让您增大或减小图像的画布大小。增大画布的大小会在现有图像周围添加空间。减小图像的画布大小会裁剪到图像中。如果增大带有透明背景的图像的画布大小,则添加的画布是透明的。...如果图像没有透明背景,则添加的画布的颜色将由几个选项决定。 1.选取“图像”>“画布大小”。 2.执行下列操作之一: 在“宽度”和“高度”框中输入画布的尺寸。...3.对于“定位”,单击某个方块以指示现有图像在新画布上的位置。

    2.5K20

    gd.so和php_gd2.so 有什么区别

    在PHP中,通过GD库处理图像的操作,都是先在内存中处理,操作完成以后再以文件流的方式,输出到浏览器或保存在服务器的磁盘中。创建一个图像应该完成如下所示的四个基本步骤。...(1)创建画布:所有的绘图设计都需要在一个背景图片上完成,而画布实际上就是在内存中开辟的一块临时区域,用于存储图像的信息。...以后的图像操作都将基于这个背景画布,该画布的管理就类似于我们在画画时使用的画布。...(2)绘制图像:画布创建完成以后,就可以通过这个画布资源,使用各种画像函数设置图像的颜色、填充画布、画点、线段、各种几何图形,以及向图像中添加文本等。...(3)输出图像:完成整个图像的绘制以后,需要将图像以某种格式保存到服务器指定的文件中,或将图像直接输出到浏览器上显示给用户。

    4.6K30

    探究 canvas 绘图中撤销(undo)功能的实现方式

    以上就是背景介绍。但是略麻烦的是添加水印的需求中还有一个需要实现的功能是用户能够切换水印的位置。...奇怪,好像和我们预期的结果不太一致。我们想要的结果是 save 方法调用后能够保存当前画布的快照,resolve 方法调用后能够完全回到上一个保存的快照处的状态。 再仔细研究一下 API。...} dy 源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量) */ void ctx.putImageData(imagedata, dx, dy); 我们来看一个简单的应用方式: class...之前说过,我们通过对整个画布保存快照的方式来记录每个操作,换个角度思考,如果我们把每次绘制的动作保存到一个数组中,在每次执行撤销操作时,首先清空画布,然后重绘这个绘图动作数组,也可以实现撤销操作的功能。...以 drawImage 为比较对象,看 jsperf 上这个测试用例,二者的性能存在数量级的差距。 ? 因此,我们认为此优化方案是可行的。

    2.1K50

    5 款图像工具瞬间提高代码逼格!

    Marmoset 是一款 Chrome 应用程序,可以让你以透视的方式截取你的代码截图。...直接将你的代码复制粘贴到右侧内容窗口,左侧「Canvas」参数调整画布大小、窗口到画布的间距、画布背景颜色。 ?...将你的代码复制粘贴到 CodeZen,从 CodeZen 预设的语言、字体大小、窗口主题、背景颜色、窗口宽度等参数来调整代码图像效果,保存图像支持 JPG 和 PNG 格式。...Carbon 是由 Dawn Labs 创建开发的一个代码转图像的开源项目,目前在 GitHub 上拥有 20000 多颗星,每月活跃用户超过 50000。 ?...将代码放入 Carbon 后,你可以通过改变语法主题、背景颜色 / 图像、窗口主题或填充来自定义代码图像,设置背景图像时还支持将图像文件拖放到 Carbon 来作为代码图像的背景。 ?

    1.3K10

    WordCloud词云库快速入门(一)

    WordCloud简介 wordcloud是优秀的词云展示第三方库,以词语为基本单位,通过图形可视化的方式,更加直观和艺术的展示文本。...型,用于控制词云图画布高度,默认为200 prefer_horizontal:float型,控制所有水平显示的文字相对于竖直显示文字的比例,越小则词云图中竖直显示的文字越多 mask:传入蒙版图像矩阵...,使得词云的分布与传入的蒙版图像一致 contour:float型,当mask不为None时,contour参数决定了蒙版图像轮廓线的显示宽度,默认为0即不显示轮廓线 contour_color:设置蒙版轮廓线的颜色...,默认为’black’ scale:当画布长宽固定时,按照比例进行放大画布,如scale设置为1.5,则长和宽都是原来画布的1.5倍 min_font_size:int型,控制词云图中最小的词对应的字体大小...不同形状的词云 接下来,我们在这个词云的基础上添加一个五角星 利用PIL模块读取我们的五角星图片文件并转换为numpy数组,作为WordCloud的mask参数传入: from PIL import

    1.4K10

    UI设计师必须知道的 iOS和Android的APP图标设计指南

    尽管图标非常小,但图标会在App Store和Google Play中显示,向用户传达app的信息,并且安装后能在主屏幕上找到它,因此图标非常重要。...此时它有助于让用户在主屏幕上的其他图标中找到自己,但是什么能使应用程序图标脱颖而出呢? 关于这个主题有很多文章,其中大部分都与保罗兰德的设计原则有关。这并不奇怪!应用程序图标是一个品牌。...如果有一个特定项目的图像很多 – 放弃它并显示更有特色的东西。设计师需要一直寻找解决问题的方法! 有一些新的东西很难想出来。制作情绪板,创建思维导图,向朋友和同事寻求建议。...我们先选择一个画布尺寸。在iOS中,可以找到不同大小的图标,从40px×40px到1024px×1024px。因为减小图像大小总是比较容易,所以我们将创建一个更大的画布。...您可以将前景与背景分开,然后这些图层将在应用效果的设备上独立移动。因此,前景可以包括透明度。在坚固的背景下无法看到视差效果,但如果您的构图复杂,它可以为您的设计带来动态效果。

    2.1K20

    【Android 性能优化】布局渲染优化 ( 过渡绘制 | 背景设置产生的过度绘制 | Android 系统的渲染优化 | 自定义布局渲染优化 )

    ---- 在 【Android 性能优化】布局渲染优化 ( CPU 与 GPU 架构分析 | 安卓布局显示流程 | 视觉与帧率分析 | 渲染超时卡顿分析 | 渲染过程与优化 ) 博客中分析了图像渲染的...16 毫秒过程中 CPU 渲染 CPU 传递数据到 GPU GPU 渲染 是三大耗时操作 , 上述分析的背景过渡绘制 , 是从减少 GPU 渲染时间角度出发 , 降低图像渲染时间 ; CPU 传递数据给...透明组件数据传递 Android 系统做了如下自动优化操作 , 当组件的背景是透明的 , 那么 CPU 将该组件转为多维向量图片 ( 多边形和纹理组成 ) 时发现该组件是透明的 , 该组件的图像信息就不会传递给...实现上述图片 A 在 Canvas 画布上绘制部分图片方式 : ① 完整画布 : onDraw 函数中的 Canvas canvas 参数是完整的画布 ; ② 取出图片 A 绘制部分的 Canvas...A , 下图中的下面的部分图片 A 展示 ; 3. clipRect 函数原型 : 剪切画布 , 获取 Canvas 完整画布的子画布 , 传入左 , 上 , 右 , 下 , 四个值 , 将画布剪切出来

    4.7K30

    Python完成SVG转PNG格式——方法二

    一、前情提要 在Python完成SVG转PNG格式中,虽然图片格式成功转换了,但是会出现几个问题,如下所示 1、原本透明背景的SVG格式图片,转换成PNG格式之后,图片变成了白色的背景 白色背景变透明的方法可看我上一篇文章...python把png的白色背景变透明 image.png image.png 2、有的图片在成功转换之后出现了奇怪的线 image.png 3、控制台出现报错 image.png总结 总结: 1、会出现白色背景...,是因为 renderPM 模块转换出来的PNG格式的图片是24位深的,即只能控制RGB通道,所以,会从透明背景变成白色的背景,无法避免,只能转换完成之后再处理; 2、出现奇怪的线,是因为 renderPM...,是因为 renderPM 模块,是读取了SVG格式的图片内容之后,再在一块画布上画出PNG格式的图像,但是此时的PNG图像只有24位深了,所以控制透明背景的 Alpha 通道只能与另外三个共线了。...': QMessageBox.warning( self.ui, '提示', '未打开文件

    5.4K30

    通过Canvas在浏览器中更酷的展示视频

    与setTimeout不同,requestAnimationFrame和显示器的刷新率同步,使用requestAnimationFrame能够有效规避对终端显示设备帧率与刷新率的不必要猜测。...我们的讨论以该命题为重点,我们希望使用合适的编码方案已实现高效的视频动画展示效果。 Phil把视频放在了hero上,并且他注意到视频的背景颜色与CSS中指定的背景颜色不完全匹配。...当Phil在不同的浏览器或设备中打开该网页时,他意识到了我们正在处理的色彩空间问题——在解码视频时,不同的浏览器或硬件处理颜色空间的方式不同,因此就像我们试图做的那样,这里基本上没有办法可靠地匹配不同解码器的十六进制值...仔细观察,你会看到紫色背景的细微差别。经许可使用的多路分配图像。 为了解决这个问题,我们放弃了这种尝试并试图只在每个浏览器内进行初始修复。...我们像以前那样将画面框架绘制到画布上并且我们只抓取边缘上的一个像素;当浏览器将图像渲染到画布时将颜色转换为正确的颜色空间,这样我们就可以抓住边缘上的一个RGBA值并将主体背景颜色设置为相同!

    2.1K30

    自绘引擎时代,为什么Flutter能突出重围?

    泛 Web 容器时代的解决方案优化了 Web 容器时代的加载、解析和渲染这三大过程,把影响它们独立运行的 Web 标准进行了裁剪,以相对简单的方式支持了构建移动端页面必要的 Web 标准(如 Flexbox...在计算机系统中,图像的显示需要 CPU、GPU 和显示器一起配合完成:CPU 负责图像数据计算,GPU 负责图像数据渲染,而显示器则负责最终图像显示。...随后视频控制器会以每秒 60 次的速度,从帧缓冲区读取帧数据交由显示器完成图像显示。...FLutter的优势 (1)在所有的平台下,都可以保持同样UI样式,同样的业务逻辑 大多数跨平台框架中的UI呈现如下图所示: 而Flutter是直接画在画布上: (2)减少开发所需的时间 Flutter...(6)有自己的渲染引擎 Flutter使用Skia将界面渲染到平台提供的画布上,意味着不需调整,即可迁移到其他平台。

    8.2K20357

    Android CompoundButton

    ,可以直接 使用CompoundButton的CompoundButton.OnCheckedChangeListener() 一个带有选中/未选中状态的按钮。...(如:图像) 参数 d 用作背景的可绘制对象(如:图像) public void setButtonDrawable (int resid) 通过资源Id给按钮背景设置一个图像 参数 resid...作为背景图像的资源id public void setChecked (boolean checked) 改变按钮的选中状态 参数 checked true选中,false非选中 public...这个方式当缓存的图像绘图区状态确定失效时通过视图系统调用。你可以使用getDrawableState()方法重新取得当前的状态。...参数 canvas 在画布上绘制背景 protected boolean verifyDrawable (Drawable who) 如果你的视图子类显示他自己的可视化对象,他将要重写此方法并且为了显示可绘制返回

    91020

    canvas 绘制双线技巧

    楔子 最近一个项目,需要绘制双线的效果,双线效果表示的是轨道(类似铁轨之类的),如下图所示: 负责这块功能开发的小伙,姑且称之为L吧,最开始是通过数学计算的方式来实现这种双线,也就是在原来的路径的基础上...其中: 源图像 = 您打算放置到画布上的绘图。 目标图像 = 您已经放置在画布上的绘图 下图显示了globalCompositeOperation的不同的值的解释: ?...看下destination-out的解释: 在源图像外显示目标图像。只有源图像外的目标图像部分会被显示,源图像是透明的。 绘制了线路A的canvas图像是目标图像,线路B是源图像。...根据上面解释,只有源图像之外的目标图像能够被显示。最终绘制的效果如下: ?...对于source-out,其效果正好和destination-out的效果相反: 在目标图像之外显示源图像。只会显示目标图像之外源图像部分,目标图像是透明的。

    2.4K50

    JavaScript--DOM总结

    alt 设置或返回无法显示图像时的替代文本。 border 设置或返回图像周围的边框。...方法 描述 fillText() 在画布上绘制“被填充的”文本 strokeText() 在画布上绘制文本(无填充) measureText() 返回包含指定文本宽度的对象 图像绘制 方法 描述...drawImage() 向画布上绘制图像、画布或视频 像素操作 属性 描述 width 返回 ImageData 对象的宽度 height 返回 ImageData 对象的高度 data 返回一个对象...对象,该对象为画布上指定的矩形复制像素数据 putImageData() 把图像数据(从指定的 ImageData 对象)放回画布上 合成 属性 描述 globalAlpha 设置或返回绘图的当前 alpha...设置背景图像是否固定或随页面滚动 backgroundColor 设置元素的背景颜色 backgroundImage 设置元素的背景图像 backgroundPosition 设置背景图像的起始位置

    7610

    Sketch for mac(矢量绘图UI设计软件)93 最新中文版

    现在,当您将鼠标悬停在智能网格手柄上时,您将看到一个选择有多少行和多少列 - 而不仅仅是在您使用它时。我们改进了在“设计”选项卡处于活动状态时向图层添加交互时“检查器”选项卡的行为方式。...修复了如果在检查器的覆盖部分中启用了“仅显示相同大小的符号”选项,则检查器中的符号菜单不会展开的错误。修复了删除先前选择的组件后在画布和组件模式之间切换时会导致崩溃的错误。...修复了背景模糊出现在画布上并带有轻微灰色调的错误。修复了如果光标位于其父组上时矩形上的角半径手柄会出现的问题。修复了多个编辑器在处理复杂文档时可能影响性能的回归问题。...修复了按下 ⌘ 时会错误捕捉叠加预览的错误。修复了将符号设为本地或分离符号会重置或丢失任何应用的覆盖的错误。修复了背景模糊可能在文档预览中显示黑色背景的错误。...修复了当在图层上使用多个不透明填充时,被遮挡的填充在图层边缘仍然可见的错误。修复了在复制画板时,名称以数字结尾的画板会增加而不是附加到数字的问题。

    1.6K30

    前端canvas基础复习,canvas学习笔记,持续记录

    Canvas基础 1.介绍 Canvas API(画布)是在HTML5中新增的标签用于在网页实时生成图像,并且可以操作图像内容,基本上它是一个可以用JavaScript操作的位图(bitmap)。...该元素可以使用CSS来定义大小,但在绘制时图像会伸缩以适应它的框架尺寸:如果 CSS 的尺寸与初始画布的比例不一致,它会出现扭曲。...填充、描边、剪切 不带fill、stroke的方法都只会在画布上产生路径状态,不会绘制实际图像。调用fill、stroke等等方法之后才会进行绘制。...5.用 CSS 设置大的背景图 如果像大多数游戏那样,你有一张静态的背景图,用一个静态的元素,结合background 特性,以及将它置于画布元素之后。...事实上,这种方式不能准确地控制动画的帧率,这是因为 setInterval()本身存在一定的性能问题。

    2.4K40

    学习 canvas 的 globalCompositeOperation 做出的神奇效果

    定义 globalCompositeOperation 属性设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上。 源图像 = 您打算放置到画布上的绘图。...目标图像 = 您已经放置在画布上的绘图。...在目标图像上显示源图像。 source-atop 在目标图像顶部显示源图像。源图像位于目标图像之外的部分是不可见的。 source-in 在目标图像中显示源图像。...第一种 使用 canvas 的 getImageData 方法,来获取 canvas 上的像素信息,这个方法返回的对象的 data 属性是一个一维数组,包含以 RGBA 顺序的数据,数据使用 0 至...第二种方式,虽然不存在跨域的问题,但是,不能很好的根据刮刮卡上灰色的面积,控制最后擦除全部灰色的时机。

    1.6K20
    领券